CertController.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Http\Controllers\Controller;
  4. use App\Http\Requests\Admin\CertRequest;
  5. use App\Models\NodeCertificate;
  6. use Exception;
  7. use Log;
  8. class CertController extends Controller
  9. {
  10. // 域名证书列表
  11. public function index()
  12. {
  13. $certs = NodeCertificate::orderBy('id')->paginate()->appends(request('page'));
  14. foreach ($certs as $cert) {
  15. if ($cert->pem) {
  16. $certInfo = openssl_x509_parse($cert->pem);
  17. if ($certInfo) {
  18. $cert->issuer = $certInfo['issuer']['O'] ?? null;
  19. $cert->from = date('Y-m-d', $certInfo['validFrom_time_t']) ?: null;
  20. $cert->to = date('Y-m-d', $certInfo['validTo_time_t']) ?: null;
  21. }
  22. }
  23. }
  24. return view('admin.node.cert.index', ['certs' => $certs]);
  25. }
  26. public function create()
  27. {
  28. return view('admin.node.cert.info');
  29. }
  30. // 添加域名证书
  31. public function store(CertRequest $request)
  32. {
  33. if ($cert = NodeCertificate::create($request->validated())) {
  34. return redirect(route('admin.node.cert.edit', $cert))->with('successMsg', trans('common.generate_item', ['attribute' => trans('common.success')]));
  35. }
  36. return redirect()->back()->withInput()->withErrors('生成失败');
  37. }
  38. // 编辑域名证书
  39. public function edit(NodeCertificate $cert)
  40. {
  41. return view('admin.node.cert.info', compact('cert'));
  42. }
  43. public function update(CertRequest $request, NodeCertificate $cert)
  44. {
  45. if ($cert->update($request->validated())) {
  46. return redirect()->back()->with('successMsg', trans('common.update_action', ['action' => trans('common.success')]));
  47. }
  48. return redirect()->back()->withInput()->withErrors(trans('common.update_action', ['action' => trans('common.failed')]));
  49. }
  50. // 删除域名证书
  51. public function destroy(NodeCertificate $cert)
  52. {
  53. try {
  54. if ($cert->delete()) {
  55. return response()->json(['status' => 'success', 'message' => '删除成功']);
  56. }
  57. } catch (Exception $e) {
  58. Log::error('删除域名证书失败:'.$e->getMessage());
  59. return response()->json(['status' => 'fail', 'message' => '删除错误:'.$e->getMessage()]);
  60. }
  61. return response()->json(['status' => 'fail', 'message' => '删除失败']);
  62. }
  63. }