コード例 #1
0
        public async Task <IHttpActionResult> GoogleAsync([FromBody] GoogleRequest request)
        {
            User user;

            user = await UnitOfWork.GetUserRepository().SelectFirstOrDefaultAsync(r => r.Email == request.Email);

            if (user == null)
            {
                Registration registration = await _registrationService.RegisterAsync(registrationType : RegistrationType.Google, email : request.Email, firstName : request.FirstName, lastName : request.LastName, birthDt : request.BirthDay, gender : request.Gender);

                user = registration.User;
            }
            else if (user.Registration.Type.Equals(RegistrationType.Email))
            {
                throw new ActionCannotBeExecutedException(ExceptionMessages.WrongRegistrationType);
            }

            if (!user.GoogleToken.Equals(request.GoogleToken))
            {
                user.GoogleToken = request.GoogleToken;
            }

            (string accessToken, System.Guid guid, User user)result = await _loginService.LoginAsync(LoginType.Google, request.Email);

            LoginResposne response = new LoginResposne
            {
                AccessToken  = result.accessToken,
                RefreshToken = result.guid,
                Role         = result.user.Role
            };

            await UnitOfWork.SaveChangesAsync();

            return(Ok(response));
        }
コード例 #2
0
        public async Task <IHttpActionResult> LoginAsync([FromBody] LoginRequest request)
        {
            (string accessToken, System.Guid guid, User user) = await _loginService.LoginAsync(LoginType.Email, request.Email, request.Password);

            LoginResposne response = new LoginResposne
            {
                AccessToken  = accessToken,
                RefreshToken = guid,
                Role         = user.Role
            };
            await UnitOfWork.SaveChangesAsync();

            return(Ok(response));
        }