Esempio n. 1
0
        public LoginResultDto Execute(LoginDto dto)
        {
            User           user   = unit.User.GetByEmailIncludingRoles(dto.Email);
            LoginResultDto result = new LoginResultDto();

            if (user == null)
            {
                result.Message = Messages.UserNotExist;
            }
            else if (!user.ValidatePassword(dto.Password, _encrypter))
            {
                result.Message = Messages.InvalidPassword;
            }
            else if (user.Status != Enums.EntityStatus.Active.ToInt())
            {
                result.Message = Messages.UserNotActivated;
            }
            else if (user.UserRole == null || !user.UserRole.Any(p => p.RoleId == Roles.Admin.ToInt()))
            {
                result.Message = Messages.AccessDenied;
            }
            else
            {
                result.Object       = DtoBuilder.CreateLoginDto(user);
                result.Object.Token = _jwtHandler.Create(user.Id);
                result.Status       = true;
            }
            return(result);
        }
Esempio n. 2
0
        private async Task <LoginResultDto> CreateToken(string username, UserAccount user)
        {
            try
            {
                LoginResultDto loginResult = new LoginResultDto();
                loginResult.Authenticated = true;
                var identity = await ClaimsIdentity(username, user);

                loginResult.CreatedDate    = DateTime.Now;
                loginResult.ExpirationDate =
                    loginResult.CreatedDate + TimeSpan.FromSeconds(_tokenConfigurations.Seconds);

                var handler = new JwtSecurityTokenHandler();

                var securityToken = handler.CreateToken(new SecurityTokenDescriptor
                {
                    Issuer             = _tokenConfigurations.Issuer,
                    Audience           = _tokenConfigurations.Audience,
                    SigningCredentials = _signingConfigurations.SigningCredentials,
                    Subject            = identity,
                    NotBefore          = loginResult.CreatedDate,
                    Expires            = loginResult.ExpirationDate
                });

                loginResult.AccessToken = handler.WriteToken(securityToken);
                loginResult.Message     = "Ok";

                return(loginResult);
            }
            catch (Exception e)
            {
                ConsoleEx.WriteError(e);
                throw;
            }
        }
Esempio n. 3
0
        public LoginResultDto LoginUser(string email, string password)
        {
            LoginResultDto loginResultDto = new LoginResultDto();
            List <User>    userList       = UserRepository.Find(u => u.Email == email && u.Password == password);

            if (userList.Count == 0)
            {
                return(null);
            }

            User user = userList.First();

            try
            {
                JwtTokenData jwtTokensData = TokenBusinessLogic.CreateJwtTokens(user);
                TokenBusinessLogic.AddNewToken(user, jwtTokensData.AccessToken, jwtTokensData.RefreshTokenSerial, jwtTokensData.RefreshToken);
                loginResultDto.AccessToken        = jwtTokensData.AccessToken;
                loginResultDto.RefreshTokenSerial = jwtTokensData.RefreshTokenSerial;
                return(loginResultDto);
            }
            catch (Exception e)
            {
                return(null);
            }
        }
Esempio n. 4
0
        public async Task <LoginResultDto> Authenticate(string username, string password)
        {
            LoginResultDto loginResult = new LoginResultDto();

            loginResult.Authenticated = false;
            loginResult.Message       = "Falha ao autenticar";
            try
            {
                if (!string.IsNullOrWhiteSpace(username))
                {
                    var userIdentity = await _userManager.FindByNameAsync(username);

                    if (userIdentity != null)
                    {
                        var result = await _signInManager.CheckPasswordSignInAsync(userIdentity, password, false);

                        if (result.Succeeded)
                        {
                            loginResult = await CreateToken(username, userIdentity);

                            loginResult.Username = userIdentity.UserName;
                        }
                    }
                }

                return(loginResult);
            }
            catch (Exception e)
            {
                ConsoleEx.WriteError(e);
                return(loginResult);
            }
        }
Esempio n. 5
0
        public async Task <ResponseDto <LoginResultDto> > LoginAsync(LoginDto loginDto)
        {
            var response = new LoginResultDto();

            response.SignInResult = await _signInManager.PasswordSignInAsync(loginDto.Username, loginDto.Password, loginDto.RememberMe, true);

            if (response.SignInResult.Succeeded)
            {
                var user = await _userManager.FindByNameAsync(loginDto.Username);

                response.AccessToken = _tokenService.GenerateJwtToken(user);
                response.ReturnUrl   = "redirect home";
                return(_responseService.Response(response, UserMessage.SuccessLogin));
            }

            if (response.SignInResult.RequiresTwoFactor)
            {
                response.ReturnUrl = "two factore redirect";
                return(_responseService.Response(response, UserMessage.RequiresTwoFactor));
            }

            if (response.SignInResult.IsLockedOut)
            {
                response.ReturnUrl = "lock page show";
                return(_responseService.Response(response, UserMessage.IsLockedOut));
            }


            response.ReturnUrl = "not allowed page ";
            return(_responseService.Response(response, UserMessage.IsNotAllowed));
        }
Esempio n. 6
0
        public async Task LoginTests()
        {
            var loginDto = new LoginDto()
            {
                Email = Faker.Internet.Email()
            };

            var response = new LoginResultDto
            {
                authenticated = true,
                create        = DateTime.UtcNow.ToString("yyyy-MM-dd HH:mm:ss"),
                expiration    = DateTime.UtcNow.AddHours(8).ToString("yyyy-MM-dd HH:mm:ss"),
                accessToken   = Guid.NewGuid().ToString(),
                userName      = loginDto.Email,
                message       = "Authentication successful",
            };

            _serviceMock = new Mock <ILoginService>();
            _serviceMock.Setup(m => m.FindByLoginAsync(loginDto))
            .ReturnsAsync(response);
            _service = _serviceMock.Object;

            var result = await _service.FindByLoginAsync(loginDto);

            Assert.NotNull(result);
            Assert.Equal(response, result);
        }
Esempio n. 7
0
            public static int Login(string username, string password, double minutes)
            {
                String         sha1Pwd = password;
                LoginResultDto result  = ServiceCall.Instance.UserService.TryLogin(username, sha1Pwd);

                if (result.Tag == 1)
                {
                    Exit();

                    UserDto user = ServiceCall.Instance.UserService.GetUser(result.Uid);

                    HttpContext.Current.Session[adminSK] = user;
                    HttpCookie cookie = new HttpCookie(String.Format("cms_sid_{0}", GeneratorRandomStr()));
                    cookie.Expires = DateTime.Now.AddMinutes(minutes);
                    // cookie.Domain=AppContext.Config.Domain.HostName;

                    //保存到Cookie中的密钥
                    string token = (username + Generator.Offset + sha1Pwd).EncodeMD5();

                    byte[] encodeBytes     = Encoding.UTF8.GetBytes(username + "&" + token);
                    string encodedtokenStr = Convert.ToBase64String(encodeBytes);

                    cookie.Value = encodedtokenStr;
                    cookie.Path  = "/" + Settings.SYS_ADMIN_TAG;

                    HttpContext.Current.Response.Cookies.Add(cookie);
                }
                return(result.Tag);
            }
        public LoginResultDto Login(LoginDto dto)
        {
            var result = new LoginResultDto();

            dto.Password = DatabaseCreation.GetMd5(DatabaseCreation.GetSimpleMd5(dto.Password));

            var accountFromDb = db.Accounts.FirstOrDefault(x => x.UserName == dto.UserName && x.Password == dto.Password && !x.DelFlag);

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

            var user = db.Users.FirstOrDefault(u => u.Id == accountFromDb.UserId && !u.DelFlag);

            if (user != null)
            {
                result.User = new UserInformationResponseDto(user, accountFromDb.UserName);
            }

            var group = db.Groups.FirstOrDefault(g => g.Id == accountFromDb.GroupId && !g.DelFlag);

            if (group != null)
            {
                result.Group = new GroupResponseDto
                {
                    Id   = group.Id,
                    Name = group.Name
                };
            }

            db.SaveChanges();

            return(result);
        }
        public async Task <LoginResultDto> Login([FromBody] UserLoginDto loginDto)
        {
            var user = await _userService.LoginAsync(loginDto.Login, loginDto.Password);

            if (user == null)
            {
                return(new LoginResultDto {
                    ErrorMessage = "Login or password is incorrect"
                });
            }

            var claims             = new[] { new Claim(JwtRegisteredClaimNames.Typ, Constants.JwtClaim) };
            var key                = new SymmetricSecurityKey(_jwtConfig.KeyBytes);
            var signingCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            var token = new JwtSecurityToken(_jwtConfig.Issuer,
                                             _jwtConfig.Audience,
                                             claims,
                                             null,
                                             DateTime.Now.AddMinutes(30),
                                             signingCredentials);

            var loginResultDto = new LoginResultDto
            {
                User         = _mapper.Map <UserDto>(user),
                Token        = new JwtSecurityTokenHandler().WriteToken(token),
                ErrorMessage = string.Empty
            };

            return(loginResultDto);
        }
Esempio n. 10
0
        public async Task <IActionResult> Authenticate([FromBody] LoginDto login)
        {
            var loginResultDto = new LoginResultDto();

            var result = await _signInManager.PasswordSignInAsync(login.Email, login.Password, true, lockoutOnFailure : false); // Check the user's email and password

            if (result.Succeeded)
            {
                var token = _authenticationService.GenerateAuthToken(login.Email, _appSettings.Secret); // The login was successful so generate a auth token and send it to the user along with a refresh token

                if (string.IsNullOrEmpty(token))
                {
                    return(BadRequest(new { message = "Username or password is incorrect" }));
                }

                var user = await _userManager.FindByEmailAsync(login.Email);

                _authenticationService.RemoveRefreshTokenByUser(user.Id, "providername", "refresh", "phone");         // Remove any existing refresh tokens for the user so that we can add the new one
                var newRefreshToken = _authenticationService.GenerateRefreshToken();                                  // Generate a new refresh token
                _authenticationService.AddRefreshToken(user.Id, "providername", "refresh", newRefreshToken, "phone"); // Save the new refresh token

                loginResultDto.WasSuccessful = true;
                loginResultDto.Token         = token;
                loginResultDto.RefreshToken  = newRefreshToken;

                return(Ok(loginResultDto));
            }

            loginResultDto.WasSuccessful = false;

            return(Ok(loginResultDto));
        }
        public void Login_ValidUser_InvalidPassword_ReturnsSuccess()
        {
            LoginResultDto result = this.service.Login("test", "password");

            Assert.IsNotNull(result);
            Assert.IsFalse(result.Success);
        }
Esempio n. 12
0
        public async Task <LoginResultDto> Login([FromBody] UserLoginDto loginDto)
        {
            var user = await _userService.LoginAsync(loginDto.Login, loginDto.Password);

            if (user == null)
            {
                return new LoginResultDto {
                           ErrorMessage = ErrorText.LoginIncorrect
                }
            }
            ;

            var token = new JwtSecurityToken(
                _jwtConfig.Issuer,
                _jwtConfig.Audience,
                new[] { new Claim(JwtRegisteredClaimNames.Typ, user.IsAdmin.ToString()) },
                expires: DateTime.Now.AddMinutes(30),
                signingCredentials: new SigningCredentials(
                    new SymmetricSecurityKey(_jwtConfig.KeyBytes),
                    SecurityAlgorithms.HmacSha256)
                );

            var loginResultDto = new LoginResultDto
            {
                User         = _mapper.Map <UserDto>(user),
                Token        = new JwtSecurityTokenHandler().WriteToken(token),
                ErrorMessage = string.Empty
            };

            return(loginResultDto);
        }
    }
Esempio n. 13
0
        /// <summary>
        /// 登录
        /// </summary>
        /// <param name="dto">登录数据传输对象</param>
        /// <returns>登录结果</returns>
        public Dto.Business.LoginResultDto Login(Dto.Business.LoginDto dto)
        {
            LoginResultDto result = new LoginResultDto {
                User = new UserManage.UserDto {
                    UserName = dto.UserName
                }, Result = LoginResult.UserNameNotExist
            };
            var user = _userRepository.Get(t => t.LoginId == dto.UserName);

            if (user == null)
            {
                return(result);
            }
            if (!user.CheckPassword(dto.Password))
            {
                result.Result = LoginResult.InvalidPassword;
            }
            else
            {
                result.Result = LoginResult.Success;
                LsSession.SignIn(user, true);
                //WriteOperateLog(LogType.信息, LogModule.系统管理, "用户{0}登录成功!", user.UserName);
            }
            return(result);
        }
Esempio n. 14
0
        public async Task <LoginResultDto> RefreshToken()
        {
            var claims   = ((ClaimsIdentity)_claimPrincipal.Identity).Claims;
            var userRole = claims.SingleOrDefault(x => x.Type == ClaimTypes.Name);

            if (userRole == null)
            {
                throw new Exception("No role found for current user... aborting request!");
            }

            var currentUserId = Guid.Parse(userRole.Value);
            var user          = await _dbCtx.Users.FirstOrDefaultAsync(x => x.Id == currentUserId);

            _logger.LogInformation($"RefreshToken for [{user.UserName}]");
            var reslogin = new LoginResultDto();

            reslogin.User          = user.ToDto();
            reslogin.User.RoleName = user.Role.Name;
            reslogin.User.IdRole   = user.IdRole;
            reslogin.Token         = CreateToken(user);
            reslogin.Role          = 0; //ADMIN
            reslogin.Id            = user.Id;
            reslogin.Authenticated = true;
            return(reslogin);
        }
Esempio n. 15
0
        public static string CreateToken(LoginResultDto result)
        {
            var issuedAt = DateTime.UtcNow;
            //set the time when it expires
            var expires = DateTime.UtcNow.AddDays(7);

            var tokenHandler = new JwtSecurityTokenHandler();

            //create a identity and add claims to the user which we want to log in
            var claimsIdentity = new ClaimsIdentity(new[]
            {
                new Claim(Constants.UserIdClaimKey, result.User.Id.ToString()),
                new Claim(Constants.UsernameClaimKey, result.User.Username),
                new Claim(Constants.GroupIdClaimKey, result.Group.Id.ToString()),
                new Claim(Constants.GroupNameClaimKey, result.Group.Name)
            });

            var securityKey        = new SymmetricSecurityKey(System.Text.Encoding.Default.GetBytes(Constants.TokenSecretKey));
            var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature);


            //create the jwt
            var token = tokenHandler.CreateJwtSecurityToken(
                issuer: Constants.ValidIssuer,
                audience: Constants.ValidAudience,
                subject: claimsIdentity,
                notBefore: issuedAt,
                expires: expires,
                signingCredentials: signingCredentials);

            return($"Bearer {tokenHandler.WriteToken(token)}");
        }
        public async Task <ActionResult <LoginResultDto> > LoginAsync([FromBody] LoginRequestDto requestDto)
        {
            var user = await _userManager.FindByNameAsync(requestDto.UserName);

            LoginResultDto result;

            if (user != null && await _userManager.CheckPasswordAsync(user, requestDto.Password))
            {
                var claims = new List <Claim> {
                    new Claim(ClaimTypes.Name, user.UserName)
                };

                var token = _jwtTokenFactory.CreateToken(claims);
                result = new LoginResultDto {
                    Claims = claims, LoginSuccess = true, Token = token,
                };
            }
            else
            {
                result = new LoginResultDto {
                    LoginSuccess = false
                };
            }

            return(Ok(result));
        }
Esempio n. 17
0
 public LoginResultDto loadLoginSession()
 {
     if (cache == null)
     {
         cache = JsonConvert.DeserializeObject <LoginResultDto>(ObscuredPrefs.GetString(KEY_LOGIN_SESSION));
     }
     return(cache);
 }
Esempio n. 18
0
        private void CompleteLoginAsync(LoginResultDto loginResult, string email)
        {
            //clear all stored data about user
            _accountService.Logout();

            //save auth tokens
            _accountService.ResetTokens(loginResult.AccessToken, loginResult.RefreshToken);
            _accountService.SaveProfileInfo(email, null, null);
        }
Esempio n. 19
0
        public LoginResultDto <UserDto> LoginCheck(string account, string passwd, Enums.LoginPlatform loginPlatform)
        {
            LoginResultDto <UserDto> result = new LoginResultDto <UserDto>();


            try
            {
                if (String.IsNullOrWhiteSpace(account) || String.IsNullOrWhiteSpace(passwd))
                {
                    result.Failed("用户名/密码不能为空!");
                    return(result);
                }


                //passwd = RSAHelper.Instance.Encrypt(account+passwd);
                var user = FindUserByLoginName(account);
                if (user == null || user.State == Enums.UserStatus.Deleted || user == null || user.State == Enums.UserStatus.Deleted || user.LoginPasswd != passwd)
                {
                    result.Failed("用户名/密码错误!");
                    return(result);
                }
                if (user.State == Enums.UserStatus.Forbid)
                {
                    result.Failed("您的账号已被停用,请联系单位管理员!");
                    return(result);
                }


                //走到这里说明验证通过

                if (loginPlatform == Enums.LoginPlatform.Web)
                {
                    var token = Tools.CreateWebToken(user.Id, user.LoginName, Enums.LoginPlatform.Web);
                    RedisHelper.Instance.SetHash(RedisCacheTables.WebTokenDto, user.Id, token);
                    result.Success("登录成功!");
                    result.Data  = user;
                    result.Token = token;
                }
                else if (loginPlatform == Enums.LoginPlatform.Android)
                {
                }
                else if (loginPlatform == Enums.LoginPlatform.IOS)
                {
                }
                else if (loginPlatform == Enums.LoginPlatform.WeiXinProgram)
                {
                }
            }
            catch (Exception ex)
            {
                result.Failed(ex);
            }


            return(result);
        }
Esempio n. 20
0
        public ConnectionManager(LoginResultDto loginResultDto)
        {
            LoginResultDto = loginResultDto;
            Zz             = new ServerConnection(AdressPool.ZZ_EF_APK.Ip, AdressPool.ZZ_EF_APK.Port);
            DelegateAction del = new DelegateAction();

            del.act = ReturnServer;

            Zz.PutDelegate(del);
        }
        public LoginResultDto Login(LoginCommand loginCommand)
        {
            var result = new LoginResultDto()
            {
                Sucess = true
            };

            // result.Roles.Add(new Rol(){ Name = "admin" });
            return(result);
        }
Esempio n. 22
0
        public void saveLoginSession(LoginResultDto dto)
        {
            clean();
            string js = JsonConvert.SerializeObject(dto);

            if (string.IsNullOrWhiteSpace(dto.jSessionId))
            {
                throw new System.Exception("not set jSessionId :" + js);
            }
            ObscuredPrefs.SetString(KEY_LOGIN_SESSION, js);
        }
Esempio n. 23
0
        public static LoginResultDto LoginResultInfo(bool isSuccess, string reason, string token = null, int?userID = null)
        {
            var loginResultDto = new LoginResultDto();

            loginResultDto.IsSuccess = isSuccess;
            loginResultDto.Reason    = reason;
            loginResultDto.Token     = token;
            //null 即为 userID == 0
            loginResultDto.UserID = userID == null ? 0 : (int)userID;
            return(loginResultDto);
        }
Esempio n. 24
0
        public async Task <ResultModel> Register(RegisterUserInfo userDto)
        {
            var user = MiCakeApp.User.Create(userDto.Act, userDto.Pwd, userDto.Avatar, userDto.Gender);
            await _userRepo.AddAsync(user);

            var token = _jwtSupporter.CreateToken(user);

            var userRes = new LoginResultDto()
            {
                AccessToken = token, HasUser = true, UserInfo = user.Adapt <UserDto>()
            };

            return(new ResultModel(0, "", userRes));
        }
Esempio n. 25
0
        public static async Task AddUserConnection(LoginResultDto loginResult)
        {
            var del = new DelegateAction {
                act = ReturnLoginRequest
            };
            var cmd = new Command {
                Cmd = ServerCommands.AddClientAuthorized, Json = await SerializerAsync.SerializeJson(loginResult.Username)
            };
            await Zz.WriteServer(del, cmd);

            var conn = new ConnectionManager(loginResult);

            UsersConnections.Add(loginResult.Username, conn);
        }
Esempio n. 26
0
        /// <summary>
        /// логинимся в системе
        /// </summary>
        /// <param name="input">данные передаваемые для логина</param>
        /// <returns></returns>
        static internal LoginResultDto Login(LoginInputDto input)
        {
            // Проверяем логин и пароль, получаем данные о человеке
            Person person;

            try
            {
                person = _bankGuaranteeContext.Credentials
                         .Include(c => c.Person)
                         .FirstOrDefault(c => c.Login == input.Login && c.PasswordEncrypt == input.Password)
                         ?.Person;
            }
            catch (Exception ex)
            {
                // при ошибке с БД возвращаем информацию об ошибке
                return(new LoginResultDto
                {
                    Success = false,
                    ErrorText = Resources.DatabaseError + ": " + ex.Message
                });
            }


            var result = new LoginResultDto
            {
                Success = person != null
            };

            //
            if (result.Success)
            {
                // открываем соответствующие страницы для менеджера и специалиста
                if (person.Appointment == Appointment.Manager)
                {
                    result.NextForm = new GuaranteesListFormManager();
                }
                else
                {
                    result.NextForm = new GuaranteesListFormSpecialist();
                }
            }
            else
            {
                // если человек не найден, то выводим ошибку, что данные введены некорректно
                result.ErrorText = Resources.CredentialsDenied;
            }

            return(result);
        }
        public static LoginResultDto ToLoginResultDto(this User entity)
        {
            if (entity == null)
            {
                return(null);
            }

            LoginResultDto dto = new LoginResultDto();

            dto.CopyPropertiesFrom(entity);

            dto.UserName = entity.Accounts.FirstOrDefault().UserName;
            dto.UserId   = entity.Id;

            return(dto);
        }
Esempio n. 28
0
        private IEnumerable <Claim> CreateClaimsForUser(LoginResultDto user)
        {
            var claims = new List <Claim>
            {
                new Claim(ClaimContants.UserId, user.UserId.ToString()),
                new Claim(JwtRegisteredClaimNames.GivenName, user.FullName ?? string.Empty),
                new Claim(ClaimContants.UserName, user.UserName),
            };

            foreach (var item in user.UserRoles)
            {
                claims.Add(new Claim(ClaimContants.Role, item.Role.Role));
            }

            return(claims);
        }
Esempio n. 29
0
        public async Task <LoginResultDto> GetCurrentWebInfo()
        {
            var output = new LoginResultDto();


            output.Menu = (await _userNavigationManager.GetMenuAsync("MainMenu", AbpSession.ToUserIdentifier())).UserMenuToNgMenu();

            output.App = new AppConsts()
            {
                name = ParkConsts.AppName, description = ParkConsts.Description, year = AppVersionHelper.ReleaseDate
            };



            return(output);
        }
Esempio n. 30
0
        public async Task <LoginResultDto> Login(LoginRequestDto requestDto)
        {
            var users = await _unitOfWork.FindAsyncByPredicateWithIncludeProperty <UserEntity>(x => x.UserName == requestDto.UserName && x.Password == requestDto.Password);

            if (users.Count == 0)
            {
                return(new LoginResultDto());
            }
            var user      = users.FirstOrDefault();
            var userRoles = await _unitOfWork.FindAsyncByPredicateWithIncludeProperty <UserRoleEntity>(x => x.UserId == user.Id, e => e.Role, e => e.User);

            user.UserRoles = userRoles;

            var loginResult = new LoginResultDto(user);

            return(loginResult);
        }