예제 #1
0
 /**
  * Authenticate Nodes Manager.
  *
  * @author Casper Rasmussen <*****@*****.**>
  *
  * @return \Illuminate\Http\RedirectResponse
  */
 public function manager()
 {
     // Check for disabled feature
     if (!config('nodes.backend.manager.active', true)) {
         return redirect()->route('nodes.backend.login.form')->with('error', 'Manager auth is disabled.');
     }
     // Check the passed token vs a hash of email, constant and server token for current build
     if (hash('sha256', sprintf(env('NODES_MANAGER_SALT'), Request::get('email'), env('NODES_MANAGER_TOKEN'))) != Request::get('token')) {
         return redirect()->route('nodes.backend.login.form')->with('error', 'Manager token did not match');
     }
     try {
         // Retrieve the Nodes user
         $user = $this->userRepository->loginUserFromManager(Request::all());
         // Authenticate user
         backend_user_login($user);
         // Redirect into backend
         return $this->redirectSuccess(Cookie::get('url_to_redirect_to_after_user_login'));
     } catch (Exception $e) {
         try {
             // Notify bugsnag
             app('nodes.bugsnag')->notifyException($e, null, 'error');
         } catch (Exception $e) {
             // Fail silent
         }
         // Redirect to login form
         return redirect()->route('nodes.backend.login.form')->with('error', 'Failed to login through manager');
     }
 }