/** * Create user * * @param array $data * @return null|User */ public function create(array $data) { $data['password'] = bcrypt($data['password']); $data['status'] = 1; $user = $this->userRepo->create($data); if ($user) { event(new UserWasCreated($user)); return $user; } return null; }
/** * Autneticat * * @param $provider * @return bool */ public function authenticate($provider) { $socialUser = $this->social->with($provider)->stateless()->user(); if (!$socialUser) { return false; } $identity = $this->oauth->findByProviderNameAndId($socialUser->id, $provider); if ($identity) { $this->oauth->update($identity, ['token' => $socialUser->token]); $this->auth->loginUsingId($identity->user_id, true); return true; } $user = $this->user->findByEmail($socialUser->email); if (!is_null($user)) { $this->oauth->create(['provider_id' => $socialUser->id, 'provider' => $provider, 'user_id' => $user->id, 'token' => $socialUser->token]); $this->user->update($user, ['status' => 1]); $this->auth->login($user, true); return true; } if (!setting('registration', true)) { return false; } // Just create the user $newUser = $this->user->create(['name' => $this->emailToName($socialUser->email), 'email' => $socialUser->email, 'password' => '', 'status' => 1, 'avatar' => $socialUser->avatar]); event(new UserCreatedThroughOAuth($newUser)); $this->oauth->create(['provider_id' => $socialUser->id, 'provider' => $provider, 'user_id' => $newUser->id, 'token' => $socialUser->token]); $this->auth->login($newUser, true); return true; }
/** * Save email settings * * @param Request $request * @param UserContract $userRepo * @return mixed */ public function save(Request $request, UserContract $userRepo) { $this->validate($request, ['name' => 'required|min:3|max:15', 'email' => 'required|email|max:255', 'password' => 'required|min:6']); Artisan::call('migrate:refresh', ['--force' => true]); $user = $userRepo->create(['name' => $request->get('name'), 'email' => $request->get('email'), 'password' => bcrypt($request->get('password')), 'permission' => 'admin', 'status' => 1]); session(['install.done.admin' => true]); session(['install.admin.user' => $user->name]); return redirect()->route('finish'); }