Skip to content

Commit ee376dc

Browse files
committed
Authentication
0 parents  commit ee376dc

File tree

90 files changed

+15317
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

90 files changed

+15317
-0
lines changed

.editorconfig

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
insert_final_newline = true
7+
indent_style = space
8+
indent_size = 4
9+
trim_trailing_whitespace = true
10+
11+
[*.md]
12+
trim_trailing_whitespace = false
13+
14+
[*.{yml,yaml}]
15+
indent_size = 2

.env.example

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
APP_NAME=Laravel
2+
APP_ENV=local
3+
APP_KEY=
4+
APP_DEBUG=true
5+
APP_URL=http://localhost
6+
7+
LOG_CHANNEL=stack
8+
9+
DB_CONNECTION=mysql
10+
DB_HOST=127.0.0.1
11+
DB_PORT=3306
12+
DB_DATABASE=laravel
13+
DB_USERNAME=root
14+
DB_PASSWORD=
15+
16+
BROADCAST_DRIVER=log
17+
CACHE_DRIVER=file
18+
QUEUE_CONNECTION=sync
19+
SESSION_DRIVER=file
20+
SESSION_LIFETIME=120
21+
22+
REDIS_HOST=127.0.0.1
23+
REDIS_PASSWORD=null
24+
REDIS_PORT=6379
25+
26+
MAIL_DRIVER=smtp
27+
MAIL_HOST=smtp.mailtrap.io
28+
MAIL_PORT=2525
29+
MAIL_USERNAME=null
30+
MAIL_PASSWORD=null
31+
MAIL_ENCRYPTION=null
32+
33+
MAIL_DRIVER=smtp
34+
MAIL_HOST=smtp.sendgrid.net
35+
MAIL_PORT=587
36+
MAIL_USERNAME=sendgridUsername
37+
MAIL_PASSWORD=sendgridPassword
38+
39+
AWS_ACCESS_KEY_ID=
40+
AWS_SECRET_ACCESS_KEY=
41+
AWS_DEFAULT_REGION=us-east-1
42+
AWS_BUCKET=
43+
44+
PUSHER_APP_ID=
45+
PUSHER_APP_KEY=
46+
PUSHER_APP_SECRET=
47+
PUSHER_APP_CLUSTER=mt1
48+
49+
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
50+
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

.gitattributes

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
* text=auto
2+
*.css linguist-vendored
3+
*.scss linguist-vendored
4+
*.js linguist-vendored
5+
CHANGELOG.md export-ignore

.gitignore

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/node_modules
2+
/public/hot
3+
/public/storage
4+
/storage/*.key
5+
/vendor
6+
.env
7+
.env.backup
8+
.phpunit.result.cache
9+
Homestead.json
10+
Homestead.yaml
11+
npm-debug.log
12+
yarn-error.log

.styleci.yml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
php:
2+
preset: laravel
3+
enabled:
4+
- alpha_ordered_imports
5+
disabled:
6+
- length_ordered_imports
7+
- unused_use
8+
finder:
9+
not-name:
10+
- index.php
11+
- server.php
12+
js:
13+
finder:
14+
not-name:
15+
- webpack.mix.js
16+
css: true

app/Console/Kernel.php

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace App\Console;
4+
5+
use Illuminate\Console\Scheduling\Schedule;
6+
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
7+
8+
class Kernel extends ConsoleKernel
9+
{
10+
/**
11+
* The Artisan commands provided by your application.
12+
*
13+
* @var array
14+
*/
15+
protected $commands = [
16+
//
17+
];
18+
19+
/**
20+
* Define the application's command schedule.
21+
*
22+
* @param \Illuminate\Console\Scheduling\Schedule $schedule
23+
* @return void
24+
*/
25+
protected function schedule(Schedule $schedule)
26+
{
27+
// $schedule->command('inspire')
28+
// ->hourly();
29+
}
30+
31+
/**
32+
* Register the commands for the application.
33+
*
34+
* @return void
35+
*/
36+
protected function commands()
37+
{
38+
$this->load(__DIR__.'/Commands');
39+
40+
require base_path('routes/console.php');
41+
}
42+
}

app/Exceptions/Handler.php

+51
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
namespace App\Exceptions;
4+
5+
use Exception;
6+
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
7+
8+
class Handler extends ExceptionHandler
9+
{
10+
/**
11+
* A list of the exception types that are not reported.
12+
*
13+
* @var array
14+
*/
15+
protected $dontReport = [
16+
//
17+
];
18+
19+
/**
20+
* A list of the inputs that are never flashed for validation exceptions.
21+
*
22+
* @var array
23+
*/
24+
protected $dontFlash = [
25+
'password',
26+
'password_confirmation',
27+
];
28+
29+
/**
30+
* Report or log an exception.
31+
*
32+
* @param \Exception $exception
33+
* @return void
34+
*/
35+
public function report(Exception $exception)
36+
{
37+
parent::report($exception);
38+
}
39+
40+
/**
41+
* Render an exception into an HTTP response.
42+
*
43+
* @param \Illuminate\Http\Request $request
44+
* @param \Exception $exception
45+
* @return \Illuminate\Http\Response
46+
*/
47+
public function render($request, Exception $exception)
48+
{
49+
return parent::render($request, $exception);
50+
}
51+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Foundation\Auth\SendsPasswordResetEmails;
7+
8+
class ForgotPasswordController extends Controller
9+
{
10+
/*
11+
|--------------------------------------------------------------------------
12+
| Password Reset Controller
13+
|--------------------------------------------------------------------------
14+
|
15+
| This controller is responsible for handling password reset emails and
16+
| includes a trait which assists in sending these notifications from
17+
| your application to your users. Feel free to explore this trait.
18+
|
19+
*/
20+
21+
use SendsPasswordResetEmails;
22+
23+
/**
24+
* Create a new controller instance.
25+
*
26+
* @return void
27+
*/
28+
public function __construct()
29+
{
30+
$this->middleware('guest');
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
7+
use Illuminate\Support\Facades\Validator;
8+
use Illuminate\Validation\ValidationException;
9+
use Tymon\JWTAuth\Exceptions\JWTException;
10+
use Illuminate\Support\Facades\Auth;
11+
use Illuminate\Http\Request;
12+
use Tymon\JWTAuth\JWTAuth;
13+
use Carbon\Carbon;
14+
use App\User;
15+
16+
class LoginController extends Controller
17+
{
18+
/**
19+
* @var \Tymon\JWTAuth\JWTAuth
20+
*/
21+
protected $jwt;
22+
23+
public function __construct(JWTAuth $jwt)
24+
{
25+
$this->jwt = $jwt;
26+
}
27+
28+
public function authenticate(Request $request)
29+
{
30+
// Do a validation for the input
31+
$this->validateRequest($request);
32+
33+
$credentials = $request->only('email', 'password');
34+
35+
try {
36+
if (!$token = $this->jwt->attempt($credentials, ['exp' => Carbon::now()->addDay(2)->timestamp])) {
37+
return response()->json(['message' => 'invalid_credentials'], 404);
38+
}
39+
} catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
40+
return response()->json(['token_expired'], 500);
41+
} catch (\Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
42+
return response()->json(['token_invalid'], 500);
43+
} catch (\Tymon\JWTAuth\Exceptions\JWTException $e) {
44+
return response()->json(['token_absent' => $e->getMessage()], 500);
45+
}
46+
47+
$user = Auth::guard('api')->user();
48+
$image_link = 'https://res.cloudinary.com/getfiledata/image/upload/';
49+
$image_format = 'w_200,c_thumb,ar_4:4,g_face/';
50+
51+
if ($user->email_verified_at != null) {
52+
$msg['success'] = true;
53+
$msg['message'] = 'Login Successful!';
54+
$msg['user'] = $user;
55+
$msg['image_link'] = $image_link;
56+
$msg['image_small_view_format'] = $image_format;
57+
$msg['token'] = 'Bearer '. $token;
58+
return response()->json($msg, 200);
59+
} else {
60+
$msg['success'] = false;
61+
$msg['message'] = 'Login Unsuccessful: account has not been confirmed yet!';
62+
return response()->json($msg, 401);
63+
}
64+
}
65+
66+
public function validateRequest(Request $request){
67+
$rules = [
68+
'email' => 'required|email',
69+
'password' => 'required|min:8',
70+
];
71+
$messages = [
72+
'required' => ':attribute is required',
73+
'email' => ':attribute not a valid format',
74+
];
75+
$this->validate($request, $rules, $messages);
76+
}
77+
}

0 commit comments

Comments
 (0)