first commit
This commit is contained in:
219
app/Http/Controllers/Auth/AuthController.php
Normal file
219
app/Http/Controllers/Auth/AuthController.php
Normal file
@@ -0,0 +1,219 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\User;
|
||||
use App\Verify_accounts;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Socialite;
|
||||
use Route;
|
||||
use Config;
|
||||
|
||||
class AuthController extends Controller
|
||||
{
|
||||
public function login(Request $request) {
|
||||
$request->validate([
|
||||
'email' => 'required|string|email',
|
||||
'password' => 'required|string',
|
||||
//'remember_me' => 'boolean'
|
||||
]);
|
||||
$credentials = request(['email', 'password']);
|
||||
if(!Auth::attempt($credentials))
|
||||
return response()->json([
|
||||
'message' => 'Unauthorized'
|
||||
], 401);
|
||||
$user = $request->user();
|
||||
$tokenResult = $user->createToken('Personal Access Token');
|
||||
$token = $tokenResult->token;
|
||||
if ($request->remember_me)
|
||||
$token->expires_at = Carbon::now()->addWeeks(1);
|
||||
$token->save();
|
||||
return response()->json([
|
||||
'access_token' => $tokenResult->accessToken,
|
||||
'token_type' => 'Bearer',
|
||||
'expires_at' => Carbon::parse(
|
||||
$tokenResult->token->expires_at
|
||||
)->toDateTimeString(),
|
||||
'userid' => $user->id,
|
||||
'role' => $user->role_id,
|
||||
'verified' => $user->phone_verified_at,
|
||||
'reported' => $user->reported
|
||||
]);
|
||||
}
|
||||
|
||||
public function fb(Request $request)
|
||||
{
|
||||
$params = [
|
||||
'grant_type' => 'social',
|
||||
'client_id' => '2', // it should be password grant client
|
||||
'client_secret' => config('app.secret'),
|
||||
'provider' => 'facebook',
|
||||
'access_token' => $request->access_token // access token from provider
|
||||
];
|
||||
|
||||
$requestToken = Request::create("/oauth/token", "POST", $params);
|
||||
$response = app()->handle($requestToken);
|
||||
$json = json_decode($response->content(), true);
|
||||
$user = User::where('social_id', $request->social_id) -> first();
|
||||
$frontend = json_encode([
|
||||
'token_type' => $json['token_type'],
|
||||
'expires_at' => $json['expires_in'],
|
||||
'access_token' => $json['access_token'],
|
||||
'userid' => $user->id,
|
||||
'role' => $user->role_id,
|
||||
'verified' => $user->phone_verified_at,
|
||||
'reported' => $user->reported
|
||||
]);
|
||||
return $frontend;
|
||||
}
|
||||
|
||||
public function google(Request $request)
|
||||
{
|
||||
$params = [
|
||||
'grant_type' => 'social',
|
||||
'client_id' => '2', // it should be password grant client
|
||||
'client_secret' => config('app.secret'),
|
||||
'provider' => 'google',
|
||||
'access_token' => $request->access_token // access token from provider
|
||||
];
|
||||
|
||||
$requestToken = Request::create("/oauth/token", "POST", $params);
|
||||
$response = app()->handle($requestToken);
|
||||
$json = json_decode($response->content(), true);
|
||||
$user = User::where('social_id', $request->social_id) -> first();
|
||||
$frontend = json_encode([
|
||||
'token_type' => $json['token_type'],
|
||||
'expires_at' => $json['expires_in'],
|
||||
'access_token' => $json['access_token'],
|
||||
'userid' => $user->id,
|
||||
'role' => $user->role_id,
|
||||
'verified' => $user->phone_verified_at,
|
||||
'reported' => $user->reported
|
||||
]);
|
||||
return $frontend;
|
||||
}
|
||||
|
||||
public function apple(Request $request)
|
||||
{
|
||||
$params = [
|
||||
'grant_type' => 'social',
|
||||
'client_id' => '2', // it should be password grant client
|
||||
'client_secret' => config('app.secret'),
|
||||
'provider' => 'apple',
|
||||
'access_token' => $request->access_token // access token from provider
|
||||
];
|
||||
|
||||
$requestToken = Request::create("/oauth/token", "POST", $params);
|
||||
$response = app()->handle($requestToken);
|
||||
$json = json_decode($response->content(), true);
|
||||
$user = User::where('social_id', $request->social_id) -> first();
|
||||
$frontend = json_encode([
|
||||
'token_type' => $json['token_type'],
|
||||
'expires_at' => $json['expires_in'],
|
||||
'access_token' => $json['access_token'],
|
||||
'userid' => $user->id,
|
||||
'role' => $user->role_id,
|
||||
'verified' => $user->phone_verified_at,
|
||||
'reported' => $user->reported
|
||||
]);
|
||||
return $frontend;
|
||||
}
|
||||
|
||||
|
||||
public function register(Request $request)
|
||||
{
|
||||
$rules = [
|
||||
'name' => 'required|string|regex:/(^[a-zA-Z\s ÑñÁáÉéÍíÓóÚúÜü]+$)+/',
|
||||
'email' => 'required|string|email|unique:users',
|
||||
'phone' => 'required|numeric',
|
||||
'password' => 'required|string',
|
||||
'secret' => 'required|string'
|
||||
];
|
||||
|
||||
$messages = [
|
||||
'email.unique' => 'Correo electronico ya registrado',
|
||||
];
|
||||
|
||||
$validator = Validator::make($request->all(), $rules, $messages);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return response()->json([
|
||||
'message' => $validator->messages()->first()
|
||||
], 422);
|
||||
}
|
||||
|
||||
if ($request->secret == config('app.pass')) {
|
||||
|
||||
/**$verify = new Verify_accounts;
|
||||
$verify->name = $request->name;
|
||||
$verify->email = $request->email;
|
||||
$verify->password = bcrypt($request->password);
|
||||
$verify->token = str_random(70);
|
||||
|
||||
$verify->save(); */
|
||||
|
||||
$user = new User;
|
||||
$user->name = $request->name;
|
||||
$user->email = $request->email;
|
||||
$user->phone = $request->phone;
|
||||
$user->password = bcrypt($request->password);
|
||||
$user->role_id = "1";
|
||||
$user->save();
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Successfully created user!'
|
||||
], 201);
|
||||
} else {
|
||||
return response()->json([
|
||||
'message' => 'Puto el que la hackee'
|
||||
], 201);
|
||||
}
|
||||
}
|
||||
public function logout(Request $request)
|
||||
{
|
||||
$request->user()->token()->revoke();
|
||||
return response()->json([
|
||||
'message' => 'Successfully logged out'
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the authenticated User
|
||||
*
|
||||
* @return [json] user object
|
||||
*/
|
||||
public function user(Request $request)
|
||||
{
|
||||
return response()->json($request->user());
|
||||
}
|
||||
|
||||
public function checkemail($token)
|
||||
{
|
||||
$verifyUser = Verify_accounts::where('token', $token)->first();
|
||||
$user = new User;
|
||||
$user->name = $verifyUser->name;
|
||||
$user->email = $verifyUser->email;
|
||||
$user->password = $verifyUser->password;
|
||||
$user->role_id = "1";
|
||||
$user->save();
|
||||
Verify_accounts::destroy($verifyUser->id);
|
||||
}
|
||||
|
||||
public function verify(Request $request)
|
||||
{
|
||||
$user = $request->user();
|
||||
|
||||
$user->phone = $request->phone;
|
||||
$user->phone_verified_at = date("Y-m-d H:i:s");
|
||||
|
||||
$user->save();
|
||||
|
||||
return response()->json([
|
||||
'message' => 'Successfully updated'
|
||||
]);
|
||||
}
|
||||
}
|
||||
51
app/Http/Controllers/Auth/ForgotPasswordController.php
Normal file
51
app/Http/Controllers/Auth/ForgotPasswordController.php
Normal file
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
|
||||
|
||||
class ForgotPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset emails and
|
||||
| includes a trait which assists in sending these notifications from
|
||||
| your application to your users. Feel free to explore this trait.
|
||||
|
|
||||
*/
|
||||
|
||||
use SendsPasswordResetEmails;
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
protected function sendResetLinkResponse($response)
|
||||
{
|
||||
if (request()->header('Content-Type') == 'application/json') {
|
||||
return response()->json(['success' => 'Email enviado con éxito.']);
|
||||
}
|
||||
return back()->with('status', 'Email enviado con éxito.');
|
||||
}
|
||||
|
||||
protected function sendResetLinkFailedResponse($response)
|
||||
{
|
||||
if (request()->header('Content-Type') == 'application/json') {
|
||||
return response()->json(['error' => 'Por favor contacte a soporte técnico.']);
|
||||
}
|
||||
|
||||
return back()->withErrors(
|
||||
['email' => 'Ha ocurrido un error']
|
||||
);
|
||||
}
|
||||
}
|
||||
71
app/Http/Controllers/Auth/LoginController.php
Normal file
71
app/Http/Controllers/Auth/LoginController.php
Normal file
@@ -0,0 +1,71 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\AuthenticatesUsers;
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Http\Request;
|
||||
use Auth;
|
||||
use Socialite;
|
||||
use Route;
|
||||
use App\User;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Login Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller handles authenticating users for the application and
|
||||
| redirecting them to your home screen. The controller uses a trait
|
||||
| to conveniently provide its functionality to your applications.
|
||||
|
|
||||
*/
|
||||
|
||||
use AuthenticatesUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after login.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest')->except('logout');
|
||||
}
|
||||
|
||||
public function redirectToProvider($provider)
|
||||
{
|
||||
return Socialite::driver($provider)->redirect();
|
||||
}
|
||||
|
||||
public function handleProviderCallback($provider)
|
||||
{
|
||||
$user = Socialite::driver($provider)->user();
|
||||
$authUser = $this->findUser($user, $provider);
|
||||
|
||||
Auth::login($authUser, true);
|
||||
return redirect($this->redirectTo);
|
||||
}
|
||||
public function findUser($user, $provider) {
|
||||
$authUser = User::where('social_id', $user->id . '_' . $provider)->first();
|
||||
if($authUser) {
|
||||
return $authUser;
|
||||
}
|
||||
return User::create([
|
||||
'name' => $user->getName(),
|
||||
'email' => $user->getEmail(),
|
||||
'social_id' => $user->getId() . '_' . $provider,
|
||||
]);
|
||||
}
|
||||
|
||||
}
|
||||
77
app/Http/Controllers/Auth/RegisterController.php
Normal file
77
app/Http/Controllers/Auth/RegisterController.php
Normal file
@@ -0,0 +1,77 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\User;
|
||||
use Carbon\Carbon;
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Validator;
|
||||
use Illuminate\Foundation\Auth\RegistersUsers;
|
||||
|
||||
class RegisterController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Register Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller handles the registration of new users as well as their
|
||||
| validation and creation. By default this controller uses a trait to
|
||||
| provide this functionality without requiring any additional code.
|
||||
|
|
||||
*/
|
||||
|
||||
use RegistersUsers;
|
||||
|
||||
/**
|
||||
* Where to redirect users after registration.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a validator for an incoming registration request.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \Illuminate\Contracts\Validation\Validator
|
||||
*/
|
||||
protected function validator(array $data)
|
||||
{
|
||||
return Validator::make($data, [
|
||||
'name' => ['required', 'string', 'max:255'],
|
||||
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
|
||||
'phone' => ['required', 'string', 'min:8', 'max:255', 'unique:users'],
|
||||
'password' => ['required', 'string', 'min:8', 'confirmed'],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new user instance after a valid registration.
|
||||
*
|
||||
* @param array $data
|
||||
* @return \App\User
|
||||
*/
|
||||
protected function create(array $data)
|
||||
{
|
||||
return User::create([
|
||||
'name' => $data['name'],
|
||||
'email' => $data['email'],
|
||||
'phone' => $data['phone'],
|
||||
'phone_verified_at' => Carbon::now(),
|
||||
'role_id' => '2',
|
||||
'password' => Hash::make($data['password']),
|
||||
]);
|
||||
}
|
||||
}
|
||||
39
app/Http/Controllers/Auth/ResetPasswordController.php
Normal file
39
app/Http/Controllers/Auth/ResetPasswordController.php
Normal file
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\ResetsPasswords;
|
||||
|
||||
class ResetPasswordController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Password Reset Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling password reset requests
|
||||
| and uses a simple trait to include this behavior. You're free to
|
||||
| explore this trait and override any methods you wish to tweak.
|
||||
|
|
||||
*/
|
||||
|
||||
use ResetsPasswords;
|
||||
|
||||
/**
|
||||
* Where to redirect users after resetting their password.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('guest');
|
||||
}
|
||||
}
|
||||
41
app/Http/Controllers/Auth/VerificationController.php
Normal file
41
app/Http/Controllers/Auth/VerificationController.php
Normal file
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Auth;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use Illuminate\Foundation\Auth\VerifiesEmails;
|
||||
|
||||
class VerificationController extends Controller
|
||||
{
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Email Verification Controller
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| This controller is responsible for handling email verification for any
|
||||
| user that recently registered with the application. Emails may also
|
||||
| be re-sent if the user didn't receive the original email message.
|
||||
|
|
||||
*/
|
||||
|
||||
use VerifiesEmails;
|
||||
|
||||
/**
|
||||
* Where to redirect users after verification.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $redirectTo = '/home';
|
||||
|
||||
/**
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('auth');
|
||||
$this->middleware('signed')->only('verify');
|
||||
$this->middleware('throttle:6,1')->only('verify', 'resend');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user