public static void BuildClaims(this ClaimsIdentity identity, User user)
 {
     identity.AddClaims(new List<Claim>
     {
         new Claim(ClaimTypes.Name, user.Username),
         new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
         new Claim(CustomClaimTypes.UserType, user.UserType.ToString())
     });
 }
        private void SaveLoginInformation(User user, Guid issuedId)
        {
            _authKeyRepository.SetAuthKey(user.Id, issuedId);

            // Update User record with latest login information.
            user.LastLoginDate = DateTime.UtcNow;
            user.LoginAttempts = 0;
            user.Locked = false;
            _userRepository.Update(user);

            _loginSessionRepository.Insert(new LoginSession
            {
                UserId = user.Id,
                LoginDateTime = DateTime.UtcNow
            });
        }
        private void HandleFailedLogin(OAuthGrantResourceOwnerCredentialsContext context, User user)
        {
            user.LoginAttempts = (byte)(user.LoginAttempts + 1);
            if (user.LoginAttempts > 3)
            {
                user.Locked = true;
            }

            _userRepository.Update(user);

            var errorMessage = (user.LoginAttempts < 3)
                ? string.Format("The password is incorrect, you have {0} attempts left. ", 3 - user.LoginAttempts)
                : "The user account is locked.";

            context.SetError("invalid_grant", errorMessage);
        }
 private static AuthenticationProperties CreateProperties(User user)
 {
     return new AuthenticationProperties(new Dictionary<string, string>
     {
         { "username", user.Username },
         { "userId", user.Id.ToString() },
         { "userTypeId", ((int)user.UserType).ToString(CultureInfo.InvariantCulture) }
     });
 }