This commit is contained in:
赵世界 2022-07-27 19:06:16 +08:00
parent 1af1e9cc1b
commit 554105e766
19 changed files with 275 additions and 50 deletions

View File

@ -4,6 +4,8 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
@ -37,4 +39,16 @@ class LoginController extends Controller
{
$this->middleware('guest')->except('logout');
}
public function login(Request $request)
{
$credentials = $request->only('name', 'password');
if (Auth::attempt($credentials)) {
// 通过认证..
return response()->json(['token' => '']);
}else {
return response()->json(['error' => 'auth login fail']);
}
}
}

View File

@ -8,6 +8,8 @@ use App\Providers\RouteServiceProvider;
use Illuminate\Foundation\Auth\RegistersUsers;
use Illuminate\Support\Facades\Hash;
use Illuminate\Support\Facades\Validator;
use Faker\Generator as Faker;
use Illuminate\Support\Str;
class RegisterController extends Controller
{
@ -50,9 +52,10 @@ class RegisterController extends Controller
protected function validator(array $data)
{
return Validator::make($data, [
'name' => ['required', 'string', 'max:255'],
'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
'name' => ['required', 'string', 'unique:users', 'max:255'],
'email' => ['string', 'email', 'max:255', 'unique:users'],
'password' => ['required', 'string', 'min:8', 'confirmed'],
'role_id' => ['required', 'numeric', 'exists:roles,id'],
]);
}
@ -60,14 +63,17 @@ class RegisterController extends Controller
* Create a new user instance after a valid registration.
*
* @param array $data
* @return \App\Models\User
* @return User
*/
protected function create(array $data)
{
$faker = new Faker();
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'email' => $data['email'] ?? $faker->unique()->safeEmail,
'password' => Hash::make($data['password']),
'api_token' => Str::random(60),
]);
}
}

View File

@ -0,0 +1,44 @@
<?php
namespace App\Http\Controllers\Goods;
use App\Http\Controllers\Controller;
use App\Http\Resources\GoodsBrandResource;
use App\Models\GoodsBrand;
class GoodsBrandsController extends Controller
{
public function index()
{
$goodsBrands = GoodsBrand::query()->paginate();
return GoodsBrandResource::collection($goodsBrands);
}
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|unique:users|max:255',
]);
GoodsBrand::created();
}
public function show($id)
{
$columns = ['*'];
$goodsBrand = GoodsBrand::query()->find($id, $columns);
return GoodsBrandResource::collection($goodsBrand);
}
public function update()
{
}
public function destory()
{
}
}

View File

@ -0,0 +1,10 @@
<?php
namespace App\Http\Controllers\Goods;
use App\Http\Controllers\Controller;
class GoodsTypeController extends Controller
{
}

View File

@ -0,0 +1,43 @@
<?php
namespace App\Http\Controllers\User;
use App\Http\Controllers\Controller;
use App\Models\User;
use Illuminate\Http\Request;
use Faker\Generator as Faker;
use Illuminate\Support\Str;
class UsersController extends Controller
{
public function index()
{
}
public function store(Request $request)
{
$request->validate([
'name' => 'required|string|unique:users|max:255',
'password' => 'required|string|min:8|confirmed',
]);
$user = new User();
$user->name = $request->name;
$user->password = $request->password;
}
public function show($id)
{
return User::query()->find($id);
}
public function update()
{
}
public function destory()
{
}
}

View File

@ -0,0 +1,19 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class GoodsBrandResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return parent::toArray($request);
}
}

View File

@ -0,0 +1,19 @@
<?php
namespace App\Http\Resources;
use Illuminate\Http\Resources\Json\JsonResource;
class GoodsTypeResource extends JsonResource
{
/**
* Transform the resource into an array.
*
* @param \Illuminate\Http\Request $request
* @return array
*/
public function toArray($request)
{
return parent::toArray($request);
}
}

View File

@ -1,8 +0,0 @@
<?php
namespace App\Models;
class ModelHasPermissions extends Model
{
}

View File

@ -1,8 +0,0 @@
<?php
namespace App\Models;
class ModelHasRoles extends Model
{
}

View File

@ -1,8 +0,0 @@
<?php
namespace App\Models;
class Permission extends Model
{
}

View File

@ -1,8 +0,0 @@
<?php
namespace App\Models;
class Role extends Model
{
//
}

View File

@ -1,8 +0,0 @@
<?php
namespace App\Models;
class RoleHasPermission extends Model
{
}

View File

@ -4,10 +4,13 @@ namespace App\Models;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Hash;
use Spatie\Permission\Traits\HasRoles;
class User extends Authenticatable
{
use Notifiable;
use HasRoles;
/**
* The attributes that are mass assignable.
@ -24,7 +27,7 @@ class User extends Authenticatable
* @var array
*/
protected $hidden = [
'password', 'remember_token',
'password', 'remember_token', 'api_token',
];
/**
@ -35,4 +38,9 @@ class User extends Authenticatable
protected $casts = [
'email_verified_at' => 'datetime',
];
public function setPasswordAttribute($value)
{
$this->attributes['password'] = Hash::make($value);
}
}

View File

@ -19,10 +19,11 @@ use Illuminate\Support\Str;
$factory->define(User::class, function (Faker $faker) {
return [
'name' => $faker->name,
'name' => 'erpAdmin',
'email' => $faker->unique()->safeEmail,
'email_verified_at' => now(),
'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password
'api_token' => Str::random(60),
'remember_token' => Str::random(10),
];
});

View File

@ -19,6 +19,7 @@ class CreateUsersTable extends Migration
$table->string('email')->unique();
$table->timestamp('email_verified_at')->nullable();
$table->string('password');
$table->string('api_token', 80)->unique()->nullable()->default(null);
$table->rememberToken();
$table->timestamps();
});

View File

@ -12,5 +12,6 @@ class DatabaseSeeder extends Seeder
public function run()
{
// $this->call(UsersTableSeeder::class);
factory(\App\Models\User::class)->create();
}
}

View File

@ -0,0 +1,71 @@
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@200;600&display=swap" rel="stylesheet">
<!-- Styles -->
<style>
html, body {
background-color: #fff;
color: #636b6f;
font-family: 'Nunito', sans-serif;
font-weight: 200;
height: 100vh;
margin: 0;
}
.full-height {
height: 100vh;
}
.flex-center {
align-items: center;
display: flex;
justify-content: center;
}
.position-ref {
position: relative;
}
.top-right {
position: absolute;
right: 10px;
top: 18px;
}
.content {
text-align: center;
}
.title {
font-size: 84px;
}
.links > a {
color: #636b6f;
padding: 0 25px;
font-size: 13px;
font-weight: 600;
letter-spacing: .1rem;
text-decoration: none;
text-transform: uppercase;
}
.m-b-md {
margin-bottom: 30px;
}
</style>
</head>
<body>
<div class="flex-center position-ref full-height">
HOME
</div>
</body>
</html>

View File

@ -1,6 +1,6 @@
<?php
use Illuminate\Http\Request;
use App\Http\Controllers\Auth\LoginController;
/*
|--------------------------------------------------------------------------
@ -12,7 +12,23 @@ use Illuminate\Http\Request;
| is assigned the "api" middleware group. Enjoy building your API!
|
*/
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
Route::middleware('auth:api')->group(function () {
// 用户
Route::resource('users', 'User\UsersController', ['only' => ['index', 'store', 'show', 'update', 'destory']]);
// 商品种类
Route::resource('goods_types', 'Goods\GoodsTypesController', ['only' => ['index', 'store', 'show', 'update', 'destory']]);
// 商品品牌
Route::resource('goods_brands', 'Goods\GoodsBrandsController', ['only' => ['index', 'store', 'show', 'update', 'destory']]);
// 日志
Route::resource('logs', 'Log\LogsController', ['only' => ['index', 'show']]);
// 商品
Route::resource('goods', 'Log\LogsController', ['only' => ['index', 'show']]);
// 店铺
Route::resource('shops', 'Log\LogsController', ['only' => ['index', 'show']]);
// 角色
Route::resource('roles', 'Role\RolesController', ['only' => ['index', 'show']]);
// 权限
Route::resource('permissions', 'Permissions\LogsController', ['only' => ['index', 'show']]);
});
Route::post('/auth/login', [LoginController::class, 'login'])->name('auth.login');

View File

@ -14,3 +14,15 @@
Route::get('/', function () {
return view('welcome');
});
Route::get('/home', function () {
return view('home');
})->name('home');
Route::get('/login', function () {
return view('welcome');
})->name('login');
Route::get('/register', function () {
return view('welcome');
})->name('register');