示例#1
0
        public LoginResultDTO AuthenticateUser(string UserName, string Password)
        {
            var user = _userRepository.All.FirstOrDefault(m => m.Username == UserName);

            if (user != null && user.Password == Password)
            {
                var LoginResult = new LoginResultDTO()
                {
                    LoginResult = Backbone.Enums.LoginResult.Success,
                    ArtifexUser = new ArtifexUser()
                    {
                        Id = 1, Username = "******"
                    },
                };

                if (LoginResult.LoginResult == Backbone.Enums.LoginResult.Success)
                {
                    String Token = _tokenGenerator.GenerateToken(LoginResult.ArtifexUser);
                    LoginResult.CreateProfile();
                    LoginResult.User.Token = Token;
                    return(LoginResult);
                }
            }


            //TODO: Authenticate from database

            return(null);
        }
示例#2
0
        public async Task <IActionResult> Login([FromBody] UserDTO model)
        {
            var claims = await GetIdentity(model.Email, model.Password);

            if (claims == null)
            {
                LoginResultDTO resp = new LoginResultDTO
                {
                    Successful = false,
                    Error      = "Username and password are invalid."
                };
                return(Ok(resp));
            }
            var now = DateTime.UtcNow;
            // создаем JWT-токен
            var jwt = new JwtSecurityToken(
                issuer: _configuration["ISSUER"],
                audience: _configuration["AUDIENCE"],
                notBefore: now,
                claims: claims,
                expires: now.Add(TimeSpan.FromMinutes(Convert.ToInt32(_configuration["LIFETIME"]))),
                signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_configuration["KEY"])), SecurityAlgorithms.HmacSha256));
            var            encodedJwt     = new JwtSecurityTokenHandler().WriteToken(jwt);
            LoginResultDTO LoginResultDTO = new LoginResultDTO
            {
                Successful = true,
                Token      = encodedJwt
            };

            return(Ok(LoginResultDTO));
        }
示例#3
0
        public Response <LoginResultDTO> SignUp(SignUpDTO request)
        {
            LoginResultDTO result = null;

            BusinessProcess.Current.Process(p =>
            {
                result = IoC.Get <IAccountBusiness>().SignUp(request);
            });

            return(BusinessProcess.Current.ToResponse(result));
        }
示例#4
0
        public Response <LoginResultDTO> Relogin(AccountDTO dto)
        {
            LoginResultDTO result = null;

            BusinessProcess.Current.Process(p =>
            {
                result = IoC.Get <IAccountBusiness>().Relogin(dto);
            });

            return(BusinessProcess.Current.ToResponse(result));
        }
示例#5
0
        public async Task <IActionResult> Login([FromBody] LoginViewModel model)
        {
            model.RememberMe = false;

            try
            {
                if (!ModelState.IsValid)
                {
                    var query = from state in ModelState.Values
                                from error in state.Errors
                                select error.ErrorMessage;

                    var errorList = query.ToList();

                    return(BadRequest(new LoginResultDTO
                    {
                        Status = "fail",
                        ResponseCode = "01",
                        ResponseMessage = "Sign in failed",
                        UserSignInResult = null,
                        ErrorList = errorList
                    }));
                }

                var loginResult = await _identityService.LoginAsync(model.email, model.password, model.RememberMe);

                if (loginResult.Status == "success")
                {
                    return(Ok(loginResult));
                }
                else
                {
                    return(BadRequest(loginResult));
                }
            }
            catch (Exception ex)
            {
                var OtherErrors = new LoginResultDTO
                {
                    Status           = "fail",
                    ResponseCode     = "02",
                    ResponseMessage  = ex.Message.ToString(),
                    UserSignInResult = null,
                    ErrorList        = null
                };

                return(StatusCode(500, OtherErrors));
            }
        }
示例#6
0
        public (bool IsValid, Dictionary <string, string> Payload, LoginResultDTO result) IsValid(LoginRequest loginRequest)
        {
            // some validation logic ..
            LoginResultDTO result = null;

            result = new LoginResultDTO()
            {
                UserId   = "userId",
                UserName = "******"
            };

            var dict = new Dictionary <string, string>();

            dict.Add("RESTfulAPITemplateUserName", loginRequest.Username);

            return(true, dict, result);
        }
示例#7
0
        public async Task <LoginResultDTO> ExternalLogin(ExternalLoginDTO loginDTO)
        {
            if (loginDTO.LoginProvider == DictionaryResources.Facebook)
            {
                await ValidateFacebookToken(loginDTO.Token);
            }
            else
            {
                await ValidateGoogleToken(loginDTO.Token);
            }

            var user = _userManager.Users
                       .SingleOrDefault(u => u.Email == loginDTO.Email);

            if (user == null)
            {
                user = await ExternalRegister(loginDTO);
            }

            var loggedUser = await _userRepository.GetUserLogin(loginDTO.LoginProvider, user.Id);

            if (loggedUser == null)
            {
                await AddLogin(loginDTO, user);
            }

            var result = await _signInManager
                         .ExternalLoginSignInAsync(loginDTO.LoginProvider, loginDTO.ProviderKey, false);

            if (!result.Succeeded)
            {
                throw new ApplicationException(DictionaryResources.InvalidLoginAttempt);
            }

            var loginResult = new LoginResultDTO
            {
                Token = GenerateJwtToken(user),
                Id    = user.Id
            };

            return(loginResult);
        }
示例#8
0
        public async Task <LoginResultDTO> Login(LoginInfo loginInfo)
        {
            var user = await _userManager.FindByNameAsync(loginInfo.username);

            if (user != null && await _userManager.CheckPasswordAsync(user, loginInfo.password))
            {
                var userRoles = await _userManager.GetRolesAsync(user);

                var authClaims = new List <Claim>
                {
                    new Claim(ClaimTypes.Name, user.UserName),
                    new Claim(JwtRegisteredClaimNames.Jti, GenerateGd().ToString()),
                };

                foreach (var userRole in userRoles)
                {
                    authClaims.Add(new Claim(ClaimTypes.Role, userRole));
                }

                var authSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["JWT:Secret"]));

                var token = new JwtSecurityToken(
                    issuer: _configuration["JWT:ValidIssuer"],
                    audience: _configuration["JWT:ValidAudience"],
                    expires: DateTime.Now.AddHours(6),
                    claims: authClaims,
                    signingCredentials: new SigningCredentials(authSigningKey, SecurityAlgorithms.HmacSha256)
                    );

                LoginResultDTO loginResult = new LoginResultDTO();
                loginResult.gd    = user.gd;
                loginResult.token = new
                {
                    token      = new JwtSecurityTokenHandler().WriteToken(token),
                    expiration = token.ValidTo
                };

                return(loginResult);
            }
            return(null);
        }
示例#9
0
        public async Task <(bool IsAuthenticated, LoginResultDTO Token)> IsAuthenticated(LoginCommandDTO request)
        {
            var loginCommand = _mapper.Map <LoginCommand>(request);

            // larsson:这里应可以用消息队列(如MediatR)来解耦,实现CQRS
            var loginResult = await _userService.IsUserLoginValid(loginCommand.Username, loginCommand.Password);

            if (!loginResult.IsValid)
            {
                return(false, null);
            }

            LoginResultDTO loginResultDTO = null;

            loginResultDTO = new LoginResultDTO()
            {
                UserId   = loginResult.UserId.ToString(),
                UserName = loginCommand.Username
            };

            var dict = new Dictionary <string, string>();

            dict.Add("UserName", loginResultDTO.UserName);
            dict.Add("UserId", loginResultDTO.UserId);

            var claims      = dict?.Select(x => new Claim(x.Key, x.Value));
            var key         = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_tokenManagement.Secret));
            var credentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var jwtToken    = new JwtSecurityToken(
                issuer: _tokenManagement.Issuer,
                audience: _tokenManagement.Audience,
                claims: claims,
                expires: DateTime.Now.AddMinutes(_tokenManagement.AccessExpiration),
                signingCredentials: credentials);

            var token = new JwtSecurityTokenHandler().WriteToken(jwtToken);

            loginResultDTO.Token = token;

            return(true, loginResultDTO);
        }
示例#10
0
        public LoginResultDTO AuthenticateUser(string UserName, string Password)
        {
            //TODO: Authenticate from database
            var LoginResult = new LoginResultDTO()
            {
                LoginResult = Backbone.Enums.LoginResult.Success,
                ArtifexUser = new ArtifexUser()
                {
                    Id = 1, Username = "******"
                },
            };

            if (LoginResult.LoginResult == Backbone.Enums.LoginResult.Success)
            {
                String Token = _tokenGenerator.GenerateToken(LoginResult.ArtifexUser);
                LoginResult.CreateProfile();
                LoginResult.User.Token = Token;
                return(LoginResult);
            }
            return(null);
        }
示例#11
0
        public async Task <LoginResultDTO> LogIn(LoginDTO model)
        {
            var loginResult = new LoginResultDTO();
            var user        = await _userManager.FindByEmailAsync(model.Email);

            if (user != null)
            {
                if (user.EmailConfirmed == false)
                {
                    loginResult.Success = false;
                    loginResult.Message = "You account not activated";

                    return(loginResult);
                }
            }
            else
            {
                loginResult.Success = false;
                loginResult.Message = "Account with this email address does not exist";

                return(loginResult);
            }

            var result = await _signInManager.CheckPasswordSignInAsync(user, model.Password, true);

            if (result.Succeeded)
            {
                var token = await _tokenService.CreateToken(user, _userManager);

                loginResult.Success = true;
                loginResult.Token   = token;
            }
            else
            {
                loginResult.Success = false;
                loginResult.Message = "Password is incorrect.";
            }

            return(loginResult);
        }
        public async Task <HttpResponseMessage> Login([FromBody] UILogin model)
        {
            Users foundUser = await _db.Users.Where(x => x.Username == model.Username).FirstOrDefaultAsync();

            if (foundUser == null)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Not authorized!"));
            }
            string hash = PasswordHelper.GenerateHash(foundUser.PasswordSalt, model.Password);

            if (foundUser.PasswordHash != hash)
            {
                return(Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Not authorized!"));
            }
            //deactivate previous tokens
            foreach (var item in _db.AuthenticationTokens.Where(x => x.UserID == foundUser.UserID).ToList())
            {
                item.IsDeleted = true;
            }
            _db.SaveChanges();
            AuthenticationTokens newToken = new AuthenticationTokens
            {
                DeviceID  = model.DeviceID,
                IsDeleted = false,
                UserID    = foundUser.UserID,
                TokenDate = DateTime.Now,
                Token     = Guid.NewGuid().ToString()
            };

            _db.AuthenticationTokens.Add(newToken);
            _db.SaveChanges();
            LoginResultDTO loginResult = new LoginResultDTO
            {
                token = newToken,
                user  = foundUser
            };

            return(Request.CreateResponse(HttpStatusCode.OK, loginResult));
        }
示例#13
0
        public async Task <LoginResultDTO> Login(LoginDTO loginDTO)
        {
            var result = await _signInManager
                         .PasswordSignInAsync(loginDTO.Username, loginDTO.Password, false, false);

            if (!result.Succeeded)
            {
                throw new ApplicationException(DictionaryResources.InvalidLoginAttempt);
            }

            var user = _userManager.Users
                       .SingleOrDefault(u => u.UserName == loginDTO.Username);

            var loginResult = new LoginResultDTO
            {
                Token    = GenerateJwtToken(user),
                Id       = user.Id,
                Username = user.UserName
            };

            return(loginResult);
        }
示例#14
0
        public async Task <ActionResult <LoginResultDTO> > Login([FromBody] LoginDTO loginDto)
        {
            LoginResultDTO result = new LoginResultDTO();

            try
            {
                //On tente de s'authentifier
                var tokenWithClaimsPrincipal = await this.AccountService.LoginAsync(loginDto);

                //Si authentifier alors on enregistre les informationq dans les cookies
                if (tokenWithClaimsPrincipal != null && tokenWithClaimsPrincipal.IsValid)
                {
                    AuthenticationProperties authProperties = new AuthenticationProperties()
                    {
                        AllowRefresh = true,
                        IsPersistent = loginDto.RememberMe,
                        ExpiresUtc   = DateTime.UtcNow.AddDays(1)
                    };

                    var claims = tokenWithClaimsPrincipal.Claims.ToList();
                    claims.Add(new Claim("AccessToken", $"Bearer {tokenWithClaimsPrincipal.AccessToken}"));

                    Response.Cookies.Append("Authorization", tokenWithClaimsPrincipal.AccessToken);
                    await HttpContext.SignInAsync(
                        new ClaimsPrincipal(new ClaimsIdentity(claims,
                                                               CookieAuthenticationDefaults.AuthenticationScheme)), authProperties);

                    result.User = await this.ApplicationUserService.GetByEmailAsync(loginDto.Email);
                }
            }
            catch (Exception)
            {
                result.Error = "Login failed due to incorrect credentials";
            }


            return(Ok(result));
        }
示例#15
0
        public Result <LoginResultDTO> PerformLogIn(string inGameName, string forPlayerName)
        {
            inGameName    = inGameName.Trim();
            forPlayerName = forPlayerName.Trim();

            var gameFound = this._games.FirstOrDefault(g => g.Name == inGameName);

            if (gameFound == null)
            {
                return(Result.Failure <LoginResultDTO>("Game has not been found by its name"));
            }

            var playerFound = gameFound.FindPlayer(forPlayerName);

            if (playerFound == null)
            {
                return(Result.Failure <LoginResultDTO>("Player does not exist in Game"));
            }

            var jwtPlayerToken = this._bingoSecurity.CreateJWTTokenForPlayer(inGameName);
            var loginResult    = new LoginResultDTO(playerFound, gameFound.BallsPlayed, jwtPlayerToken);

            return(Result.Ok(loginResult));
        }
示例#16
0
        public async Task <LoginResultDTO> Login(LoginRequestDTO item)
        {
            var result = new LoginResultDTO {
                Successful = false
            };
            var request = new HttpRequestMessage(HttpMethod.Post, this.UrlApi + "Login");

            request.Headers.Accept.Clear();
            request.Headers.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            var content = new StringContent(JsonConvert.SerializeObject(item), Encoding.UTF8, "application/json");

            request.Content = content;
            //request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token);
            var response = await _httpClient.SendAsync(request, CancellationToken.None);

            string str = await response.Content.ReadAsStringAsync();

            result = JsonConvert.DeserializeObject <LoginResultDTO>(str);
            await LocalStorageManagerService.SavePermanentItemAsync("Token", result.Token);

            await LocalStorageManagerService.SavePermanentItemAsync("UserId", result.UserId);

            return(result);
        }
示例#17
0
        public async Task <LoginResultDTO> Login(LoginDTO loginDTO)
        {
            var user = _userManager.Users.SingleOrDefault(u => u.Email == loginDTO.Email);

            if (!await _userManager.IsEmailConfirmedAsync(user) && !_userManager.GetLoginsAsync(user).Result.Any())
            {
                throw new ApplicationException(DictionaryResources.EmailNotConfirmed);
            }

            var result = await _signInManager.PasswordSignInAsync(loginDTO.Email, loginDTO.Password, false, false);

            if (!result.Succeeded)
            {
                throw new ApplicationException(DictionaryResources.InvalidLoginAttempt);
            }

            var loginResult = new LoginResultDTO
            {
                Token = GenerateJwtToken(user),
                Id    = user.Id
            };

            return(loginResult);
        }
示例#18
0
        public async Task <IActionResult> Login([FromBody] LoginDTO login)
        {
            this.logger.LogDebug($"登录账户: {login.UserName}");
            var result = await this.signInManager.PasswordSignInAsync(login.UserName, login.Password, true, false);

            if (!result.Succeeded)
            {
                var errorMessage = result switch
                {
                    { } when result.IsLockedOut => "账户被锁定",
                    { } when result.IsNotAllowed => "账户被禁用",
                    { } when result.RequiresTwoFactor => "账户需要验证",
                    _ => "邮箱或密码无效"
                };

                this.logger.LogDebug($"登录账户失败: {login.UserName} ({errorMessage})");
                var failedResul = new LoginResultDTO
                {
                    Successful = false,
                    Error      = errorMessage
                };
                return(this.BadRequest(failedResul));
            }

            var claims = await this.GetClaimsAsync(login.UserName);

            var token      = this.tokenGenerator.GenerateSecurityToken(claims);
            var loginResul = new LoginResultDTO
            {
                Successful = true,
                Token      = token
            };

            this.logger.LogDebug($"登录账户成功: {login.UserName}");
            return(this.Ok(loginResul));
        }
示例#19
0
        public async Task <LoginResultDTO> LoginAsync(string email, string password, bool rememberMe)
        {
            string token = "";

            ApplicationUser user = await _userManager.FindByEmailAsync(email);

            if (user != null)
            {
                var result = await _signInManager.PasswordSignInAsync(email, password, rememberMe, lockoutOnFailure : false);

                if (result.Succeeded)
                {
                    string secret = _appSettings.Secret;
                    token = IdentityUtil.generateJwtToken(user, secret);

                    UserSignInResultDTO customerResult = new UserSignInResultDTO
                    {
                        firstname = user.FirstName,
                        lastname  = user.LastName,
                        email     = user.Email,
                        phone     = user.PhoneNumber,
                        token     = token
                    };

                    LoginResultDTO loginResultDTO = new LoginResultDTO
                    {
                        Status           = "success",
                        ResponseCode     = "00",
                        ResponseMessage  = "Sign in Successfully",
                        UserSignInResult = customerResult,
                        ErrorList        = null
                    };

                    return(loginResultDTO);
                }
                else
                {
                    LoginResultDTO loginResultDTO = new LoginResultDTO
                    {
                        Status           = "fail",
                        ResponseCode     = "01",
                        ResponseMessage  = "Invalid Credentials",
                        UserSignInResult = null,
                        ErrorList        = null
                    };

                    return(loginResultDTO);
                }
            }
            else
            {
                LoginResultDTO loginResultDTO = new LoginResultDTO
                {
                    Status           = "fail",
                    ResponseCode     = "01",
                    ResponseMessage  = "User does not exist",
                    UserSignInResult = null,
                    ErrorList        = null
                };

                return(loginResultDTO);
            }
        }