Пример #1
0
        public async Task <IActionResult> Login([FromBody] LoginDto loginDto)
        {
            var user = await _userManager.FindByEmailAsync(loginDto.Email);

            if (user == null)
            {
                return(NotFound());
            }

            else
            {
                var result = await _signInManager.CheckPasswordSignInAsync(user, loginDto.Password, false);

                if (result.Succeeded)
                {
                    var token = await _tokenHelper.CreateAccessToken(user);

                    var refreshToken = _tokenHelper.CreateRefreshToken();

                    user.RefreshToken = refreshToken;
                    await _userManager.UpdateAsync(user);

                    return(Ok(new
                    {
                        AccessToken = token,
                        RefreshToken = refreshToken
                    }));
                }

                else
                {
                    return(BadRequest("Failed to login, try again"));
                }
            }
        }
Пример #2
0
        }                                                                         //injected by IOC


        public T Authorize <T>(DataModels.ITokenRequest Request, OAuth2.DataModels.Client Client = null)
            where T : DataModels.Token, new()
        {
            var accounts = AccountModel.GetAccount(Request.username, Request.password);

            if (accounts == null || accounts.Count == 0)
            {
                throw TokenErrorUtility.CreateError(DataModels.ErrorCodes.invalid_request, "Invalid username or password", Request);
            }

            DataModels.ResourceOwner owner = new DataModels.ResourceOwner()
            {
                id         = accounts[0].username,
                time       = DateTime.UtcNow.Millisecond,
                attributes = accounts[0].ToDictonary(),
            };

            ResourceOwnerModel.CreateOrUpdate(owner);
            T token =
                TokenModel.InsertToken <T>(
                    TokenHelper.CreateAccessToken(),
                    DataModels.TokenTypes.bearer,
                    3600,
                    DateTime.UtcNow.GetTotalSeconds(),
                    Client,
                    TokenHelper.IntersectScopes(Request.scope, Client.allowed_scope),
                    owner);

            if (token == null)
            {
                throw new OAuth2.DataModels.TokenRequestError(DataModels.ErrorCodes.server_error, "Unable to store access token");
            }

            return(token);
        }
Пример #3
0
        }                                                                        //injected by IOC

        public T Authorize <T>(DataModels.ITokenRequest Request, OAuth2.DataModels.Client Client = null)
            where T : DataModels.Token, new()
        {
            using (IDbConnection db = DBFactory.Open())
            {
                T token = TokenModel.InsertToken <T>(
                    TokenHelper.CreateAccessToken(),
                    DataModels.TokenTypes.bearer,
                    3600,
                    DateTime.UtcNow.GetTotalSeconds(),
                    Client,
                    Client.allowed_scope);

                int res = db.Execute(
                    "INSERT INTO AccessToken (access_token, client_id, expires_in, scope) VALUES (@access_token, @client_id, @expires_in, @scope);",
                    token
                    );

                if (token == null)
                {
                    throw new OAuth2.DataModels.TokenRequestError()
                          {
                              error             = DataModels.ErrorCodes.server_error,
                              error_description = "Unable to store token",
                          };
                }

                return(token);
            }
        }
Пример #4
0
        }                                                 //injected by IOC

        public T Authorize <T>(OAuth2.DataModels.Client Client = null, OAuth2.DataModels.ResourceOwner Owner = null, string Scope = "")
            where T : DataModels.Token, new()
        {
            T token = TokenModel.InsertToken <T>(
                TokenHelper.CreateAccessToken(), DataModels.TokenTypes.bearer, 3600, DateTime.UtcNow.GetTotalSeconds(), Client, Scope, Owner);

            if (token == null)
            {
                throw new OAuth2.DataModels.TokenRequestError(DataModels.ErrorCodes.server_error, "Unable to store access token");
            }
            return(token);
        }
Пример #5
0
        public void ValidateLifetime_TrueIfUnexpired()
        {
            var issuedAt   = DateTime.Now;
            var expiration = issuedAt + TimeSpan.FromSeconds(70);
            var tokens     = new Tokens()
            {
                AccessToken  = TokenHelper.CreateAccessToken(issuedAt, expiration),
                RefreshToken = null
            };

            // SUT
            Assert.That(tokens.ValidateLifetime(), Is.True);
        }
Пример #6
0
        public async Task <UserSummaryViewModel> loginUser(UserLoginViewModel model)
        {
            var user = await userRepository.findUserByUsername(model.username);

            if (user == null)
            {
                throw new UserNotFoundException("Username not found, please make sure the username is correct");
            }
            if (Validator.isNullOrEmpty(model.password))
            {
                throw new InvalidDataException("Password cannot be null");
            }
            if (!BCrypt.Net.BCrypt.Verify(model.password, user.password))
            {
                throw new InvalidDataException("Password incorrect");
            }
            var result = mapper.Map <User, UserSummaryViewModel>(user);

            result.refreshToken = TokenHelper.createRefreshToken(user, setting.tokenKey, setting.refeshTokenDuration);
            result.accessToken  = TokenHelper.CreateAccessToken(user, setting.tokenKey, setting.accessTokenDuration);
            return(result);
        }