Skip to content

Commit caeeb37

Browse files
committed
add sandbox template
1 parent 155ff7d commit caeeb37

25 files changed

+961
-0
lines changed
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Http\Request;
7+
use Tymon\JWTAuth\Exceptions\JWTException;
8+
use Tymon\JWTAuth\Facades\JWTAuth;
9+
use Illuminate\Support\Facades\Hash;
10+
use App\Models\Admin\User;
11+
use App\Models\Admin\UserPermission;
12+
use App\Models\Admin\Permission;
13+
use Auth;
14+
use Validator;
15+
16+
class AuthController extends Controller
17+
{
18+
private $user;
19+
public function __construct(User $user){
20+
$this->user = $user;
21+
}
22+
23+
private function getUserData(){
24+
$userId = Auth::user()->id;
25+
$user = User::where('id', '=', $userId)->with('userPermissions.permission')->first();
26+
return response()->json($user);
27+
}
28+
29+
public function register(Request $request){
30+
$user = $this->user->create([
31+
'name' => $request->get('name'),
32+
'email' => $request->get('email'),
33+
'password' => bcrypt($request->get('password'))
34+
]);
35+
return response()->json(['status'=>true,'message'=>'User created successfully','data'=>$user]);
36+
}
37+
38+
public function login(Request $request)
39+
{
40+
try {
41+
$credentials = $request->only('email', 'password');
42+
if(!$token = JWTAuth::attempt($credentials)) {
43+
return response()->json([
44+
'error' => 'Invalid credentials'
45+
], 401);
46+
}
47+
} catch(JWTException $e) {
48+
return response()->json([
49+
'error' => 'Something went wrong'
50+
], 500);
51+
}
52+
53+
$userId = JWTAuth::toUser($token)->id;
54+
55+
$user = User::find($userId, ['name', 'email', 'active']);
56+
$permissions = Permission
57+
::whereHas("permissionUsers", function($q) use ($userId){
58+
$q->where("user_id", "=", $userId);
59+
})
60+
->pluck('code');
61+
62+
if($user->active){
63+
return response()->json([
64+
'token' => $token,
65+
'user' => $user,
66+
'permissions' => $permissions
67+
], 200);
68+
}
69+
else {
70+
return response()->json([
71+
'error' => 'User inactive'
72+
], 401);
73+
}
74+
}
75+
76+
public function logout()
77+
{
78+
JWTAuth::invalidate(JWTAuth::getToken());
79+
return response()->json([
80+
'status' => 0
81+
], 200);
82+
}
83+
84+
public function getUser(Request $request){
85+
return $this->getUserData();
86+
}
87+
88+
public function editUser(Request $request){
89+
90+
$user = Auth::user();
91+
$user->update($request->only('name', 'email'));
92+
93+
return $this->getUserData();
94+
}
95+
96+
public function editUserPassword(Request $request){
97+
$user = Auth::user();
98+
99+
$validator = Validator::make($request->all(), [
100+
'old' => 'required|string|hash:'.$user->password,
101+
'new' => 'required|string|min:8|different:old',
102+
'repeat' => 'required|string|min:8|same:new',
103+
]);
104+
if ($validator->fails()) {
105+
return ['status' => -1, 'msg' => $validator->errors()];
106+
}
107+
$user->fill([
108+
'password' => Hash::make($request->get('new'))
109+
])->save();
110+
return ['status' => 1];
111+
}
112+
113+
public function refreshToken(Request $request)
114+
{
115+
$oldToken = JWTAuth::getToken();
116+
$newToken = JWTAuth::refresh($oldToken);
117+
return response()->json([
118+
'token' => $newToken,
119+
], 200);
120+
}
121+
}
Lines changed: 32 additions & 0 deletions
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+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Foundation\Auth\AuthenticatesUsers;
7+
8+
class LoginController extends Controller
9+
{
10+
/*
11+
|--------------------------------------------------------------------------
12+
| Login Controller
13+
|--------------------------------------------------------------------------
14+
|
15+
| This controller handles authenticating users for the application and
16+
| redirecting them to your home screen. The controller uses a trait
17+
| to conveniently provide its functionality to your applications.
18+
|
19+
*/
20+
21+
use AuthenticatesUsers;
22+
23+
/**
24+
* Where to redirect users after login.
25+
*
26+
* @var string
27+
*/
28+
protected $redirectTo = '/home';
29+
30+
/**
31+
* Create a new controller instance.
32+
*
33+
* @return void
34+
*/
35+
public function __construct()
36+
{
37+
$this->middleware('guest')->except('logout');
38+
}
39+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Models\Admin\User;
6+
use App\Http\Controllers\Controller;
7+
use Illuminate\Support\Facades\Validator;
8+
use Illuminate\Foundation\Auth\RegistersUsers;
9+
10+
class RegisterController extends Controller
11+
{
12+
/*
13+
|--------------------------------------------------------------------------
14+
| Register Controller
15+
|--------------------------------------------------------------------------
16+
|
17+
| This controller handles the registration of new users as well as their
18+
| validation and creation. By default this controller uses a trait to
19+
| provide this functionality without requiring any additional code.
20+
|
21+
*/
22+
23+
use RegistersUsers;
24+
25+
/**
26+
* Where to redirect users after registration.
27+
*
28+
* @var string
29+
*/
30+
protected $redirectTo = '/home';
31+
32+
/**
33+
* Create a new controller instance.
34+
*
35+
* @return void
36+
*/
37+
public function __construct()
38+
{
39+
$this->middleware('guest');
40+
}
41+
42+
/**
43+
* Get a validator for an incoming registration request.
44+
*
45+
* @param array $data
46+
* @return \Illuminate\Contracts\Validation\Validator
47+
*/
48+
protected function validator(array $data)
49+
{
50+
return Validator::make($data, [
51+
'name' => 'required|string|max:255',
52+
'email' => 'required|string|email|max:255|unique:users',
53+
'password' => 'required|string|min:6|confirmed',
54+
]);
55+
}
56+
57+
/**
58+
* Create a new user instance after a valid registration.
59+
*
60+
* @param array $data
61+
* @return User
62+
*/
63+
protected function create(array $data)
64+
{
65+
return User::create([
66+
'name' => $data['name'],
67+
'email' => $data['email'],
68+
'password' => bcrypt($data['password']),
69+
]);
70+
}
71+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Auth;
4+
5+
use App\Http\Controllers\Controller;
6+
use Illuminate\Foundation\Auth\ResetsPasswords;
7+
8+
class ResetPasswordController extends Controller
9+
{
10+
/*
11+
|--------------------------------------------------------------------------
12+
| Password Reset Controller
13+
|--------------------------------------------------------------------------
14+
|
15+
| This controller is responsible for handling password reset requests
16+
| and uses a simple trait to include this behavior. You're free to
17+
| explore this trait and override any methods you wish to tweak.
18+
|
19+
*/
20+
21+
use ResetsPasswords;
22+
23+
/**
24+
* Where to redirect users after resetting their password.
25+
*
26+
* @var string
27+
*/
28+
protected $redirectTo = '/home';
29+
30+
/**
31+
* Create a new controller instance.
32+
*
33+
* @return void
34+
*/
35+
public function __construct()
36+
{
37+
$this->middleware('guest');
38+
}
39+
}

0 commit comments

Comments
 (0)