-
Notifications
You must be signed in to change notification settings - Fork 653
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #35 from tuandm/feature/user-management
Simple resource implementation in both Laravel/Vue
- Loading branch information
Showing
38 changed files
with
861 additions
and
40 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,7 +3,7 @@ | |
* File AuthController.php | ||
* | ||
* @author Tuan Duong <[email protected]> | ||
* @package Laravue\Core | ||
* @package Laravue | ||
* @version 1.0 | ||
*/ | ||
namespace App\Http\Controllers; | ||
|
@@ -13,9 +13,7 @@ | |
use Illuminate\Http\Request; | ||
use Illuminate\Http\Response; | ||
use Illuminate\Support\Facades\Auth; | ||
use Illuminate\Support\Facades\Validator; | ||
use App\Http\Controllers\Controller; | ||
|
||
use App\Http\Resources\User as UserResource; | ||
|
||
/** | ||
* Class AuthController | ||
|
@@ -32,7 +30,7 @@ public function login(Request $request) | |
{ | ||
$credentials = $request->only('email', 'password'); | ||
if ($token = $this->guard()->attempt($credentials)) { | ||
return response()->json(new JsonResponse(Auth::user()), Response::HTTP_OK)->header('Authorization', $token); | ||
return response()->json(new UserResource(Auth::user()), Response::HTTP_OK)->header('Authorization', $token); | ||
} | ||
|
||
return response()->json(new JsonResponse([], 'login_error'), Response::HTTP_UNAUTHORIZED); | ||
|
@@ -44,15 +42,9 @@ public function logout() | |
return response()->json((new JsonResponse())->success([]), Response::HTTP_OK); | ||
} | ||
|
||
public function user(Request $request) | ||
public function user() | ||
{ | ||
$user = User::find(Auth::user()->id); | ||
$user->roles = [$user->role]; | ||
$user->avatar = 'http://i.pravatar.cc'; | ||
return response()->json([ | ||
'status' => 'success', | ||
'data' => $user | ||
]); | ||
return new UserResource(Auth::user()); | ||
} | ||
|
||
/** | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,85 @@ | ||
<?php | ||
|
||
namespace App\Http\Controllers; | ||
|
||
use App\Http\Resources\User; | ||
use Illuminate\Http\Request; | ||
use Illuminate\Support\Facades\Input; | ||
use Validator; | ||
|
||
class UserController extends Controller | ||
{ | ||
/** | ||
* Display a listing of the resource. | ||
* | ||
* @return \Illuminate\Http\Response | ||
*/ | ||
public function index() | ||
{ | ||
return User::collection(\App\User::paginate(15)); | ||
} | ||
|
||
/** | ||
* Store a newly created resource in storage. | ||
* | ||
* @param \Illuminate\Http\Request $request | ||
* @return \Illuminate\Http\Response | ||
*/ | ||
public function store(Request $request) | ||
{ | ||
// | ||
} | ||
|
||
/** | ||
* Display the specified resource. | ||
* | ||
* @param int $id | ||
* @return \Illuminate\Http\Response | ||
*/ | ||
public function show($id) | ||
{ | ||
return new User(\App\User::find($id)); | ||
} | ||
|
||
/** | ||
* Update the specified resource in storage. | ||
* | ||
* @param \Illuminate\Http\Request $request | ||
* @param int $id | ||
* @return \Illuminate\Http\Response | ||
*/ | ||
public function update(Request $request, int $id) | ||
{ | ||
$user = \App\User::find($id); | ||
if ($user === null) { | ||
return response()->json(['error' => 'User not found'], 404); | ||
} | ||
|
||
$rules = array( | ||
'name' => 'required', | ||
'email' => 'required|email', | ||
'role' => 'required|not_in:admin', | ||
); | ||
|
||
$validator = Validator::make($request->all(), $rules); | ||
if ($validator->fails()) { | ||
return response()->json(['errors' => $validator->errors()], 403); | ||
} else { | ||
$user->name = $request->get('name'); | ||
$user->email = $request->get('email'); | ||
$user->save(); | ||
return new User($user); | ||
} | ||
} | ||
|
||
/** | ||
* Remove the specified resource from storage. | ||
* | ||
* @param int $id | ||
* @return \Illuminate\Http\Response | ||
*/ | ||
public function destroy($id) | ||
{ | ||
// | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
<?php | ||
|
||
namespace App\Http\Resources; | ||
|
||
use Illuminate\Http\Resources\Json\JsonResource; | ||
|
||
class User extends JsonResource | ||
{ | ||
/** | ||
* Transform the resource into an array. | ||
* | ||
* @param \Illuminate\Http\Request $request | ||
* @return array | ||
*/ | ||
public function toArray($request) | ||
{ | ||
return [ | ||
'id' => $this->id, | ||
'name' => $this->name, | ||
'email' => $this->email, | ||
'role' => $this->role, | ||
'roles' => [$this->role], | ||
'avatar' => 'http://i.pravatar.cc', | ||
]; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,76 @@ | ||
<?php | ||
|
||
use Illuminate\Database\Seeder; | ||
|
||
class UsersTableSeeder extends Seeder | ||
{ | ||
/** | ||
* Run the database seeds. | ||
* | ||
* @return void | ||
*/ | ||
public function run() | ||
{ | ||
$userList = [ | ||
"Adriana C. Ocampo Uria", | ||
"Albert Einstein", | ||
"Anna K. Behrensmeyer", | ||
"Blaise Pascal", | ||
"Caroline Herschel", | ||
"Cecilia Payne-Gaposchkin", | ||
"Chien-Shiung Wu", | ||
"Dorothy Hodgkin", | ||
"Edmond Halley", | ||
"Edwin Powell Hubble", | ||
"Elizabeth Blackburn", | ||
"Enrico Fermi", | ||
"Erwin Schroedinger", | ||
"Flossie Wong-Staal", | ||
"Frieda Robscheit-Robbins", | ||
"Geraldine Seydoux", | ||
"Gertrude B. Elion", | ||
"Ingrid Daubechies", | ||
"Jacqueline K. Barton", | ||
"Jane Goodall", | ||
"Jocelyn Bell Burnell", | ||
"Johannes Kepler", | ||
"Lene Vestergaard Hau", | ||
"Lise Meitner", | ||
"Lord Kelvin", | ||
"Maria Mitchell", | ||
"Marie Curie", | ||
"Max Born", | ||
"Max Planck", | ||
"Melissa Franklin", | ||
"Michael Faraday", | ||
"Mildred S. Dresselhaus", | ||
"Nicolaus Copernicus", | ||
"Niels Bohr", | ||
"Patricia S. Goldman-Rakic", | ||
"Patty Jo Watson", | ||
"Polly Matzinger", | ||
"Richard Phillips Feynman", | ||
"Rita Levi-Montalcini", | ||
"Rosalind Franklin", | ||
"Ruzena Bajcsy", | ||
"Sarah Boysen", | ||
"Shannon W. Lucid", | ||
"Shirley Ann Jackson", | ||
"Sir Ernest Rutherford", | ||
"Sir Isaac Newton", | ||
"Stephen Hawking", | ||
"Werner Karl Heisenberg", | ||
"Wilhelm Conrad Roentgen", | ||
"Wolfgang Ernst Pauli", | ||
]; | ||
foreach ($userList as $fullName) { | ||
$name = str_replace(' ', '.', $fullName); | ||
\App\User::create([ | ||
'name' => $fullName, | ||
'email' => strtolower($name) . '@laravue.dev', | ||
'password' => \Illuminate\Support\Facades\Hash::make(strtolower($name)), | ||
'role' => \App\Laravue\Faker::randomInArray(['editor', 'user']), | ||
]); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
import request from '@/utils/request'; | ||
|
||
/** | ||
* Simple RESTful resource class | ||
*/ | ||
class Resource { | ||
constructor(uri) { | ||
this.uri = uri; | ||
} | ||
list(query) { | ||
return request({ | ||
url: '/' + this.uri, | ||
method: 'get', | ||
params: query, | ||
}); | ||
} | ||
get(id) { | ||
return request({ | ||
url: '/' + this.uri + '/' + id, | ||
method: 'get', | ||
}); | ||
} | ||
store(resource) { | ||
return request({ | ||
url: '/' + this.uri, | ||
method: 'post', | ||
params: resource, | ||
}); | ||
} | ||
update(id, resource) { | ||
// return request.put('/' + this.uri + '/' + id, resource); | ||
return request({ | ||
url: '/' + this.uri + '/' + id, | ||
method: 'put', | ||
data: resource, | ||
}); | ||
} | ||
destroy(id) { | ||
return request({ | ||
url: '/' + this.uri + '/' + id, | ||
method: 'delete', | ||
}); | ||
} | ||
} | ||
|
||
export { Resource as default }; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.