Как я могу получить доступ к имени, созданному на внешнем интерфейсе, на основании значений, размещенных при регистрации? - PullRequest
0 голосов
/ 25 апреля 2020

Я создал конечную точку API, которая успешно аутентифицирует пользователей при входе в систему, используя их электронную почту и пароль на стороне интерфейса (Реакция. js). Когда они создают учетную запись, они должны ввести свои name, email и password. Тем не менее, когда они входят в систему - все, что им нужно, это их email и password для входа в систему.

После входа в систему я хочу сказать: «Привет, имя ». Как бы я изменил свою конечную точку таким образом, чтобы, хотя пользователь входил в систему только с email и password, и у меня была возможность доступа к name, чтобы я мог использовать ее во внешнем интерфейсе? Как бы я сделал это в моем контроллере? Я пробовал так много вещей, но безрезультатно, у меня есть хитовая стена с этим.

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
use App\User;

class AuthController extends Controller
{
    /**
     * Create user
     *
     * @param  [string] name
     * @param  [string] email
     * @param  [string] password
     * @param  [string] password_confirmation
     * @return [string] message
     */
    public function signup(Request $request)
    {
        $request->validate([
            'name' => 'required|string',
            'email' => 'required|string|email|unique:users',
            'password' => 'required|string|confirmed'
        ]);
        $user = new User([
            'name' => $request->name,
            'email' => $request->email,
            'password' => bcrypt($request->password)
        ]);
        $user->save();
        return response()->json([
            'message' => 'Successfully created user!'
        ], 201);
    }

    /**
     * Login user and create token
     *
     * @param  [string] email
     * @param  [string] password
     * @param  [boolean] remember_me
     * @return [string] access_token
     * @return [string] token_type
     * @return [string] expires_at
     */
    public function login(Request $request)
    {
        $request->validate([
            'email' => 'required|string|email',
            'password' => 'required|string',
            'remember_me' => 'boolean'
        ]);
        $credentials = request(['email', 'password']);
        if(!Auth::attempt($credentials))
            return response()->json([
                'message' => 'Unauthorized'
            ], 401);
        $user = $request->user();
        $tokenResult = $user->createToken('Personal Access Token');
        $token = $tokenResult->token;
        if ($request->remember_me)
            $token->expires_at = Carbon::now()->addWeeks(1);
        $token->save();
        return response()->json([
            'access_token' => $tokenResult->accessToken,
            'token_type' => 'Bearer',
            'expires_at' => Carbon::parse(
                $tokenResult->token->expires_at
            )->toDateTimeString()
        ]);
    }

    /**
     * Logout user (Revoke the token)
     *
     * @return [string] message
     */
    public function logout(Request $request)
    {
        $request->user()->token()->revoke();
        return response()->json([
            'message' => 'Successfully logged out'
        ]);
    }

    /**
     * Get the authenticated User
     *
     * @return [json] user object
     */
    public function user(Request $request)
    {
        return response()->json($request->user());
    }
}

1 Ответ

1 голос
/ 25 апреля 2020

После успешного входа вы увидите ответ от API (Laravel). Проверьте это на вкладке Сеть в инструменте разработчика. вы увидите все возвращенные данные и будете использовать их в соответствии с требованиями.

Если в данных, возвращаемых при входе в систему, отсутствуют данные, которые вы ищете, создайте еще один маршрут API и UserController, отправьте запрос на этот маршрут и верните пользовательские данные, все просто. ПРИМЕЧАНИЕ. Всегда помещайте все уязвимые точки API в аутентифицированное промежуточное ПО.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...