BookStack/app/Http/Controllers/Auth/AuthController.php

116 lines
3.2 KiB
PHP
Raw Normal View History

2015-07-13 03:01:42 +08:00
<?php
namespace Oxbow\Http\Controllers\Auth;
2015-09-05 00:16:58 +08:00
use Oxbow\Exceptions\UserNotFound;
use Oxbow\Services\SocialAuthService;
2015-07-13 03:01:42 +08:00
use Oxbow\User;
use Validator;
use Oxbow\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
class AuthController extends Controller
{
/*
|--------------------------------------------------------------------------
| Registration & Login Controller
|--------------------------------------------------------------------------
|
| This controller handles the registration of new users, as well as the
| authentication of existing users. By default, this controller uses
| a simple trait to add these behaviors. Why don't you explore it?
|
*/
use AuthenticatesAndRegistersUsers, ThrottlesLogins;
2015-08-06 03:59:39 +08:00
protected $loginPath = '/login';
protected $redirectPath = '/';
2015-08-06 04:16:10 +08:00
protected $redirectAfterLogout = '/login';
2015-08-06 03:59:39 +08:00
protected $socialAuthService;
2015-08-06 03:59:39 +08:00
2015-07-13 03:01:42 +08:00
/**
* Create a new authentication controller instance.
* @param SocialAuthService $socialAuthService
2015-07-13 03:01:42 +08:00
*/
public function __construct(SocialAuthService $socialAuthService)
2015-07-13 03:01:42 +08:00
{
$this->middleware('guest', ['except' => 'getLogout']);
$this->socialAuthService = $socialAuthService;
2015-07-13 03:01:42 +08:00
}
/**
* Get a validator for an incoming registration request.
*
2015-09-05 00:16:58 +08:00
* @param array $data
2015-07-13 03:01:42 +08:00
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
2015-09-05 00:16:58 +08:00
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
2015-07-13 03:01:42 +08:00
'password' => 'required|confirmed|min:6',
]);
}
/**
* Create a new user instance after a valid registration.
*
2015-09-05 00:16:58 +08:00
* @param array $data
2015-07-13 03:01:42 +08:00
* @return User
*/
protected function create(array $data)
{
return User::create([
2015-09-05 00:16:58 +08:00
'name' => $data['name'],
'email' => $data['email'],
2015-07-13 03:01:42 +08:00
'password' => bcrypt($data['password']),
]);
}
2015-09-05 00:16:58 +08:00
/**
* Show the application login form.
*
* @return \Illuminate\Http\Response
*/
public function getLogin()
{
if (view()->exists('auth.authenticate')) {
return view('auth.authenticate');
}
$socialDrivers = $this->socialAuthService->getActiveDrivers();
2015-09-05 00:16:58 +08:00
return view('auth.login', ['socialDrivers' => $socialDrivers]);
}
/**
* Redirect to the relevant social site.
* @param $socialDriver
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function getSocialLogin($socialDriver)
{
return $this->socialAuthService->logIn($socialDriver);
2015-09-05 00:16:58 +08:00
}
/**
* The callback for social login services.
*
* @param $socialDriver
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
* @throws UserNotFound
*/
public function socialCallback($socialDriver)
{
$user = $this->socialAuthService->getUserFromCallback($socialDriver);
2015-09-05 00:16:58 +08:00
\Auth::login($user, true);
return redirect($this->redirectPath);
}
2015-07-13 03:01:42 +08:00
}