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

124 lines
3.4 KiB
PHP
Raw Normal View History

2015-07-12 15:01:42 -04:00
<?php
namespace Oxbow\Http\Controllers\Auth;
2015-09-04 15:40:36 -04:00
use Oxbow\Exceptions\SocialSignInException;
use Oxbow\Services\SocialAuthService;
2015-07-12 15:01:42 -04: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-05 15:59:39 -04:00
protected $loginPath = '/login';
protected $redirectPath = '/';
2015-08-05 16:16:10 -04:00
protected $redirectAfterLogout = '/login';
2015-08-05 15:59:39 -04:00
protected $socialAuthService;
2015-08-05 15:59:39 -04:00
2015-07-12 15:01:42 -04:00
/**
* Create a new authentication controller instance.
* @param SocialAuthService $socialAuthService
2015-07-12 15:01:42 -04:00
*/
public function __construct(SocialAuthService $socialAuthService)
2015-07-12 15:01:42 -04:00
{
2015-09-04 15:40:36 -04:00
$this->middleware('guest', ['only' => ['getLogin', 'postLogin']]);
$this->socialAuthService = $socialAuthService;
2015-07-12 15:01:42 -04:00
}
/**
* Get a validator for an incoming registration request.
*
2015-09-04 12:16:58 -04:00
* @param array $data
2015-07-12 15:01:42 -04:00
* @return \Illuminate\Contracts\Validation\Validator
*/
protected function validator(array $data)
{
return Validator::make($data, [
2015-09-04 12:16:58 -04:00
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
2015-07-12 15:01:42 -04:00
'password' => 'required|confirmed|min:6',
]);
}
/**
* Create a new user instance after a valid registration.
*
2015-09-04 12:16:58 -04:00
* @param array $data
2015-07-12 15:01:42 -04:00
* @return User
*/
protected function create(array $data)
{
return User::create([
2015-09-04 12:16:58 -04:00
'name' => $data['name'],
'email' => $data['email'],
2015-07-12 15:01:42 -04:00
'password' => bcrypt($data['password']),
]);
}
2015-09-04 12:16:58 -04: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-04 12:16:58 -04:00
return view('auth.login', ['socialDrivers' => $socialDrivers]);
}
/**
* Redirect to the relevant social site.
* @param $socialDriver
* @return \Symfony\Component\HttpFoundation\RedirectResponse
*/
public function getSocialLogin($socialDriver)
{
2015-09-04 15:40:36 -04:00
return $this->socialAuthService->startLogIn($socialDriver);
2015-09-04 12:16:58 -04:00
}
/**
* The callback for social login services.
*
* @param $socialDriver
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
2015-09-04 15:40:36 -04:00
* @throws SocialSignInException
2015-09-04 12:16:58 -04:00
*/
public function socialCallback($socialDriver)
{
2015-09-04 15:40:36 -04:00
return $this->socialAuthService->handleCallback($socialDriver);
}
/**
* Detach a social account from a user.
* @param $socialDriver
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function detachSocialAccount($socialDriver)
{
return $this->socialAuthService->detachSocialAccount($socialDriver);
2015-09-04 12:16:58 -04:00
}
2015-07-12 15:01:42 -04:00
}