* * This source file is subject to the MIT license that is bundled * with this source code in the file LICENSE. */ namespace App\Http\Controllers\Admin\Base; use App\Http\Controllers\Controller; use App\Repositories\Enums\ResponseCodeEnum; use App\Repositories\Models\Base\Admin; use App\Repositories\Transformers\Base\AdminTransformer; use Illuminate\Http\Request; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Log; use Jiannei\Response\Laravel\Support\Facades\Response; class AuthController extends Controller { /** * Create a new controller instance. */ public function __construct() { // $this->middleware('enum:false'); $this->middleware('throttle:10,1', ['only' => ['login']]); } /** * 登录 * Author: Mead */ public function login(Request $request) { $this->validate($request, [ 'username' => 'required', 'password' => 'required|min:6' ]); try { $credentials = request(['username', 'password']); $language = 'zh_CN'; switch (App::getLocale()) { case 'zh_CN': default: $language = 'zh_CN'; break; case 'en': $language = 'en'; break; } $credentials['language'] = $language; if (!$token = auth()->guard('admins')->attempt($credentials)) { return Response::fail(T('The account or password is incorrect.'), ResponseCodeEnum::SERVICE_LOGIN_ERROR); } $user = auth('admins')->user(); } catch (\Exception $exception) { Log::error($exception); $this->errorStore($exception); } return Response::success(compact('token', 'user')); } /** * 退出 * @return mixed * Author: Mead */ public function logout() { auth('admins')->logout(); return Response::noContent(); } /** * 用户 * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource * Author: Mead */ public function me() { Log::error(login_admin_id()); $admin = Admin::query()->find(login_admin_id()); Log::error(arr2str($admin->toArray())); $me = (new AdminTransformer())->transform($admin); 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_admin_id())->update($data); if ($re) { return Response::success(null); } return $this->errorFail(); } catch (\Exception $e) { $this->errorStore($e); } } }