示例#1
0
        public Task <ClaimsPrincipal> AuthenticateLoginAsync(PostUserLogin loginEntity)
        {
            lock (authenticationServiceLock)
            {
                return(Task.Run(() => {
                    var user = userRepository.GetUserLogin(loginEntity.Username);

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

                    if (userConnectionsService.GameConnectionService.GetConnection(user.UserLoginID) != null ||
                        userConnectionsService.ChatConnectionService.GetConnection(user.UserLoginID) != null)
                    {
                        return null;
                    }

                    if (!Authentication.AuthenticateLoginCredentials(user.PasswordSalt, loginEntity.Password, user.PasswordHash))
                    {
                        return null;
                    }

                    return GetClaimsPrincipal(user);
                }));
            }
        }
示例#2
0
        public async Task <IActionResult> PostAsync([FromBody] PostUserLogin loginEntity)
        {
            var claimsPrincipal = await authenticationService.AuthenticateLoginAsync(loginEntity);

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

            await HttpContext.SignInAsync
            (
                Security.AuthenticationScheme, claimsPrincipal
            );

            return(Ok(claimsPrincipal.ApiGetUser()));
        }