* * 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\ModelStatusEnum; 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']); $credentials['status'] = ModelStatusEnum::OK; 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(); $user = $user->only(['id', 'username', 'name', 'sex', 'role_id', 'class', 'mobile']); 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, [ 'name' => 'required', // '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); } /** * 修改个人信息 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function update(Request $request) { $this->validate($request, [ 'name' => 'required', 'headimg' => 'sometimes', 'sex' => 'nullable', 'email' => 'nullable|email', 'class' => 'nullable', 'mobile' => 'nullable|mobile', 'intro' => 'nullable', 'personal_signature' => 'nullable', 'userrate' => 'nullable', ]); try { $data = $request->only(['turename', 'headimg', 'email', 'mobile', 'class', 'intro', 'personal_signature', 'userrate', 'name', 'sex']); $re = User::query()->where('id', login_user_id())->update($data); if ($re) { return Response::success(null); } return $this->errorFail(); } catch (\Exception $e) { $this->errorStore($e); } } /** * 修改密码 * @param Request $request * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource * @throws \Illuminate\Validation\ValidationException * Author: Mead */ public function changePassword(Request $request) { $this->validate($request, [ 'password' => 'required|min:6|confirmed', ]); $password = $request->get('password'); $data['password'] = Hash::make($password); $re = User::query()->where('id', login_user_id())->update($data); if ($re) { return Response::success(null); } return $this->errorFail(); } }