. * * @package LibreNMS * @link http://librenms.org * @copyright 2020 Tony Murray * @author Tony Murray */ namespace App\Http\Controllers\Install; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Arr; use LibreNMS\DB\Eloquent; use LibreNMS\Interfaces\InstallerStep; class MakeUserController extends InstallationController implements InstallerStep { protected $step = 'user'; public function index(Request $request) { if (!$this->initInstallStep()) { return $this->redirectToIncomplete(); } if (session('install.database')) { $user = User::adminOnly()->first(); } if (isset($user)) { $this->markStepComplete(); return view('install.user-created', $this->formatData([ 'user' => $user, ])); } return view('install.make-user', $this->formatData([ 'messages' => Arr::wrap(session('message')) ])); } public function create(Request $request) { $this->validate($request, [ 'username' => 'required', 'password' => 'required', ]); try { $user = new User($request->only(['username', 'password', 'email'])); $user->level = 10; $user->setPassword($request->get('password')); $res = $user->save(); $message = $res ? trans('install.user.success') : trans('install.user.failure'); } catch (\Exception $e) { $message = $e->getMessage(); } return redirect()->back()->with('message', $message); } public function complete(): bool { return Eloquent::isConnected() && User::adminOnly()->exists(); } public function enabled(): bool { return (bool)session('install.database'); } public function icon(): string { return 'fa-key'; } }