* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace App\Http\Controllers\Api\Base; use App\Http\Controllers\Controller; use App\Repositories\Enums\ResponseCodeEnum; use App\Repositories\Models\Base\Admin; use App\Repositories\Models\User\User; use App\Repositories\Transformers\User\UserTransformer; use Illuminate\Http\Request; use Illuminate\Support\Facades\Hash; use Jiannei\Response\Laravel\Support\Facades\Response; class AuthController extends Controller { /** * Create a new controller instance. */ public function __construct() { $this->middleware('throttle:10,1', ['only' => ['login']]); } /** * 登录 * Author: Mead */ public function login(Request $request) { $this->validate($request, [ 'username' => 'required', 'password' => 'required|min:6' ]); $credentials = request(['username', 'password']); if (!$token = auth()->guard('api')->attempt($credentials)) { return Response::fail(T('The account or password is incorrect.'), ResponseCodeEnum::SERVICE_LOGIN_ERROR); } $user = auth('api')->user(); return Response::success(compact('token', 'user')); } /** * 退出 * @return mixed * Author: Mead */ public function logout() { auth('api')->logout(); return Response::noContent(); } /** * 注册 * Author: Mead */ public function store(Request $request) { $this->validate($request, [ 'turename' => 'required', 'mobile' => 'required', 'username' => 'required|min:8|unique:base_users,username', 'password' => 'required|min:6' ]); $data = $request->only(['turename', 'mobile', 'username', 'password']); $data['password'] = Hash::make($data['password']); User::query()->create($data); return Response::success(null); } /** * 用户 * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * Author: Mead */ public function me() { $me = (new UserTransformer())->transform(User::query()->find(login_user_id())); return Response::success($me); } public function update(Request $request) { $this->validate($request, [ 'username' => 'required|min:6', 'name' => 'required', 'password' => 'sometimes|confirmed', 'headimg' => 'sometimes', 'department_id' => 'required', 'status' => 'required', ]); try { $data = $request->only(['username', 'name', 'password', 'headimg', 'department_id', 'status']); if (isset($data['password']) && $data['password']) { $data['password'] = Hash::make($data['password']); } else { unset($data['password']); } $re = Admin::query()->where('id', login_user_id())->update($data); if ($re) { return Response::success(null); } return $this->errorFail(); } catch (\Exception $e) { $this->errorStore($e); } } }