InstallController.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. <?php
  2. namespace App\Http\Controllers;
  3. use App\AdminUser;
  4. use App\Utility\Install;
  5. use Illuminate\Container\Container;
  6. use Illuminate\Http\Request;
  7. use Illuminate\Support\Collection;
  8. use Illuminate\Support\Facades\Artisan;
  9. use Illuminate\Support\Facades\Route;
  10. class InstallController extends Controller
  11. {
  12. const DEFAULT_MYSQL_PORT = 3306;
  13. //
  14. public function index(Request $request)
  15. {
  16. if (Install::hasLock()) {
  17. return Container::getInstance()
  18. ->make('redirect')
  19. ->to('/login');
  20. } else {
  21. return view('base.install', ['errorMsg' => '']);
  22. }
  23. }
  24. public function setEnviroment(Request $request)
  25. {
  26. $host = $request->input('mysqlHost', 'localhost');
  27. if (strpos($host, ':') !== false) {
  28. list($host, $port) = explode(':', $host);
  29. } else {
  30. $port = self::DEFAULT_MYSQL_PORT;
  31. }
  32. $port = intval($port);
  33. $port = $port ? $port : self::DEFAULT_MYSQL_PORT;
  34. $mysqlUsername = $request->input('mysqlUsername', 'homestead');
  35. $mysqlPassword = $request->input('mysqlPassword', 'secret');
  36. $mysqlDatabase = $request->input('mysqlDatabase', 'homestead');
  37. $mysqlPrefix = $request->input('mysqlPrefix', '');
  38. //将配置写入env
  39. $data = new Collection([
  40. 'DB_PORT' => $port,
  41. 'DB_DATABASE' => $mysqlDatabase,
  42. 'DB_USERNAME' => $mysqlUsername,
  43. 'DB_PASSWORD' => $mysqlPassword,
  44. 'DB_HOST' => $host,
  45. 'DB_PREFIX' => $mysqlPrefix,
  46. ]);
  47. $contents = Install::getEnvFileDic();
  48. $contents = $contents->merge($data);
  49. Install::saveEnvFileDic($contents);
  50. return $this->json(200, 'success');
  51. }
  52. public function startInstall(Request $request)
  53. {
  54. $adminUsername = $request->input('adminUsername', 'admin');
  55. $adminPassword = $request->input('adminPassword', 'admin');
  56. $adminPasswordAgain = $request->input('adminPasswordAgain', 'admin');
  57. if ($adminPassword !== $adminPasswordAgain) {
  58. return $this->json(400, '管理员密码不一致');
  59. }
  60. Artisan::call('migrate:fresh');
  61. Artisan::call('db:seed');
  62. // 账户信息修改
  63. $admin = AdminUser::find(1);
  64. $admin->account = $adminUsername;
  65. $admin->password = $adminPassword;
  66. $admin->save();
  67. // 安装锁
  68. Install::lock();
  69. return $this->json(200, 'success');
  70. }
  71. }