mirror of
https://github.com/lkddi/nexusphp.git
synced 2026-04-14 20:40:49 +08:00
admin base table and form
This commit is contained in:
@@ -7,6 +7,7 @@ use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
use Throwable;
|
||||
|
||||
class Handler extends ExceptionHandler
|
||||
@@ -51,6 +52,10 @@ class Handler extends ExceptionHandler
|
||||
$msg = Arr::first(Arr::first($errors));
|
||||
return response()->json(fail($msg, $errors));
|
||||
});
|
||||
|
||||
$this->renderable(function (NotFoundHttpException $e) {
|
||||
return response()->json(fail('No query result.', request()->all()), 404);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -62,8 +67,15 @@ class Handler extends ExceptionHandler
|
||||
*/
|
||||
protected function prepareJsonResponse($request, Throwable $e)
|
||||
{
|
||||
$data = $request->all();
|
||||
if (config('app.debug')) {
|
||||
$msg = $e->getMessage() ?: get_class($e);
|
||||
$data['trace'] = $e->getTraceAsString();
|
||||
} else {
|
||||
$msg = 'Server Error';
|
||||
}
|
||||
return new JsonResponse(
|
||||
fail(config('app.debug') ? ($e->getMessage() ?: get_class($e)) : 'Server Error', []),
|
||||
fail($msg, $data),
|
||||
$this->isHttpException($e) ? $e->getStatusCode() : 500,
|
||||
$this->isHttpException($e) ? $e->getHeaders() : [],
|
||||
JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES
|
||||
|
||||
38
app/Http/Controllers/AuthenticateController.php
Normal file
38
app/Http/Controllers/AuthenticateController.php
Normal file
@@ -0,0 +1,38 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Http\Resources\ExamResource;
|
||||
use App\Http\Resources\UserResource;
|
||||
use App\Repositories\AuthenticateRepository;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class AuthenticateController extends Controller
|
||||
{
|
||||
private $repository;
|
||||
|
||||
public function __construct(AuthenticateRepository $repository)
|
||||
{
|
||||
$this->repository = $repository;
|
||||
}
|
||||
|
||||
public function login(Request $request)
|
||||
{
|
||||
$request->validate([
|
||||
'username' => 'required',
|
||||
'password' => 'required',
|
||||
]);
|
||||
$result = $this->repository->login($request->username, $request->password);
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function logout(Request $request)
|
||||
{
|
||||
$result = $this->repository->logout(Auth::id());
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -5,6 +5,7 @@ namespace App\Http\Controllers;
|
||||
use App\Http\Resources\UserResource;
|
||||
use App\Repositories\UserRepository;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class UserController extends Controller
|
||||
{
|
||||
@@ -100,4 +101,12 @@ class UserController extends Controller
|
||||
$result = $this->repository->listClass();
|
||||
return $this->success($result);
|
||||
}
|
||||
|
||||
public function base()
|
||||
{
|
||||
$id = Auth::id();
|
||||
$result = $this->repository->getBase($id);
|
||||
$resource = new UserResource($result);
|
||||
return $this->success($resource);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -85,8 +85,7 @@ class User extends Authenticatable
|
||||
* @var array
|
||||
*/
|
||||
protected $hidden = [
|
||||
'password',
|
||||
'remember_token',
|
||||
'secret', 'passhash',
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,7 +1,33 @@
|
||||
<?php
|
||||
namespace App\Repositories;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class AuthenticateRepository extends BaseRepository
|
||||
{
|
||||
public function login($username, $password)
|
||||
{
|
||||
$user = User::query()
|
||||
->where('username', $username)
|
||||
->firstOrFail(['id', 'secret', 'passhash']);
|
||||
if (md5($user->secret . $password . $user->secret) != $user->passhash) {
|
||||
throw new \InvalidArgumentException('username or password invalid');
|
||||
}
|
||||
$token = DB::transaction(function () use ($user) {
|
||||
$user->tokens()->delete();
|
||||
$tokenResult = $user->createToken(__CLASS__ . __FUNCTION__ . __LINE__);
|
||||
return $tokenResult->plainTextToken;
|
||||
});
|
||||
$result = $user->toArray();
|
||||
$result['token'] = $token;
|
||||
return $result;
|
||||
}
|
||||
|
||||
public function logout($id)
|
||||
{
|
||||
$user = User::query()->findOrFail($id, ['id']);
|
||||
$result = $user->tokens()->delete();
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,6 +14,12 @@ class UserRepository extends BaseRepository
|
||||
return $query->paginate();
|
||||
}
|
||||
|
||||
public function getBase($id)
|
||||
{
|
||||
$user = User::query()->findOrFail($id, ['id', 'username', 'email', 'avatar']);
|
||||
return $user;
|
||||
}
|
||||
|
||||
public function store(array $params)
|
||||
{
|
||||
$password = $params['password'];
|
||||
|
||||
Reference in New Issue
Block a user