Exemplo n.º 1
0
        public async Task Handle_ValidCommand_ShouldLoginSuccessfully(LoginOutput loginOutput)
        {
            // Arrange
            _mapperMock.Setup(m => m.Map <LoginOutput>(It.IsAny <User>())).Returns(loginOutput); // AutoMapper setup

            _appsettingMock.SetReturnsDefault(new AppSettings
            {
                Issuer = "key1",
                Secret = "kesdfaaaaaasffffffffy1"
            });

            var sut = new LoginCommandHandler(_context, _mapperMock.Object, _appsettingMock.Object); // creating system under test

            var temUser = _fixture.Create <User>();

            temUser.PasswordHash = "3pRTT3NlZJrki0wrSlmOjA==";

            // Act
            await ContextOperation.CreateEntity(_context, temUser);

            var password = SecurityHelper.Decrypt(temUser.PasswordHash);

            var output = await sut.Handle(new LoginCommand { Email = temUser.Email, Password = password }, CancellationToken.None);

            // Assert
            Assert.True(!string.IsNullOrEmpty(output.Token));
        }
Exemplo n.º 2
0
        public async Task <LoginOutput> Login(string cellPhoneOrEmail, string password)
        {
            var output = new LoginOutput {
                LoginResult = LoginResult.InvalidUserAccountOrEmail
            };
            var tenant = await _globalAccountRepository.GetTenantByCellPhoneOrEmail(cellPhoneOrEmail);

            if (tenant == null)
            {
                return(output);
            }
            using (_unitOfWorkManager.Current.SetTenantId(tenant.PId))
            {
                var user =
                    await _userRepository.GetUserByCellPhoneOrEmail(cellPhoneOrEmail);

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

                user.UserLogin(password, output);
                if (output.LoginResult == LoginResult.Success)
                {
                    tenant.CheckCanLogin(output);
                }
            }
            return(output);
        }
Exemplo n.º 3
0
 public async Task <LoginInput> Login(LoginOutput model)
 {
     return(await(Settings.BaseUrl + "/login")
            .AllowAnyHttpStatus()
            .PostJsonAsync(model)
            .ReceiveJson <LoginInput>());
 }
Exemplo n.º 4
0
        public ApiResult <LoginOutput> PubLogin(LoginInput loginInput)
        {
            var loginOutput = new LoginOutput();
            var apiResult   = _messageApiClient.PubLogin(loginInput);

            if (apiResult.Status == ResultStatus.Success)
            {
                loginOutput.Session = apiResult.Result;
                if (!loginOutput.Session.openid.IsNullOrEmpty())
                {
                    // 如果有注册会员则返回注册会员
                    //var userDetail = Resolve<IUserDetailService>().GetSingle(r => r.OpenId == loginOutput.Session.openid);
                    //if (userDetail != null) {
                    //    loginOutput.IsReg = true;
                    //    var user = Resolve<IUserService>().GetSingle(userDetail.UserId);
                    //    loginOutput.User = Resolve<IUserDetailService>().GetUserOutput(user.Id);
                    //}
                }
            }
            else
            {
                var message = apiResult.Message;
                return(ApiResult.Failure <LoginOutput>($"登陆到微信服务器失败:{message}", MessageCodes.ReremoteRequest));
            }

            return(ApiResult.Success(loginOutput));
        }
Exemplo n.º 5
0
        public IHttpActionResult Login(LoginInput login)
        {
            if (String.IsNullOrWhiteSpace(login.username) ||
                String.IsNullOrEmpty(login.username) ||
                String.IsNullOrWhiteSpace(login.password) ||
                String.IsNullOrEmpty(login.password))
            {
                return(BadRequest());
            }

            var user     = db.Users.Where(u => u.username.Equals(login.username) && u.password.Equals(login.password)).FirstOrDefault();
            var response = new LoginOutput();

            if (user != null)
            {
                response.code      = 200;
                response.message   = "success";
                response.firstname = user.firstname;
                response.lastname  = user.lastname;
                response.username  = user.username;
                response.token     = user.rowguid.ToString();

                return(Ok(response));
            }

            response.code    = 400;
            response.message = "User not found.";

            return(Content(HttpStatusCode.NotFound, response));
        }
Exemplo n.º 6
0
        public static LoginOutput Login(string username, string password)
        {
            logger.Info($"Login request for user {username}");

            LoginOutput output = new LoginOutput()
            {
                Result = LoginResult.Success,
                User   = storage.Login(username, password)
            };

            if (output.User == null)
            {
                output.Result = LoginResult.Failed;
            }
            else
            {
                int passwordDays = (int)DateTime.Now.Subtract(DateTimeHelper.GetFromUnixTimestamp(output.User.PasswordChanged)).TotalDays;

                if (passwordDays >= Settings.GetInt("PasswordLifetimeInDays"))
                {
                    output.Result = LoginResult.PasswordExpired;
                }
                else
                {
                    output.User.Properties = storage.LoadProperties(output.User);
                }
            }

            string json = JsonHelper.Serialize(output);

            logger.Info(json);

            return(output);
        }
Exemplo n.º 7
0
        /// <summary>
        /// 生成Tokne
        /// </summary>
        /// <param name="loginInput"></param>
        /// <returns></returns>
        public async Task <Result <TokenInfo> > CreateTokenAsync(LoginInput loginInput)
        {
            var user = await _masterFreeSql.GetRepository <Users, long>().Where(x => x.UserName == loginInput.UserName && x.Password == loginInput.Password).ToOneAsync();

            if (user is null)
            {
                return(Result.FromCode <TokenInfo>(ResultCode.LoginFailed));
            }
            var expireInterval = _configuration.GetSection("TokenExpireInterval").Value;
            var hour           = int.TryParse(expireInterval, out int val) ? 1 : val;
            var userInfo       = user.MapTo <UserInfo>();
            var token          = Guid.NewGuid().ToString("N");
            var tokenInfo      = new TokenInfo
            {
                ExpireTime = DateTime.Now.AddHours(hour),
                Token      = token,
            };
            var result = new LoginOutput
            {
                TokenInfo = tokenInfo,
                UserInfo  = userInfo
            };
            await RedisHelper.SetAsync(token, result, hour * 60 * 60);

            return(Result.FromData(tokenInfo));
        }
Exemplo n.º 8
0
        public static object IssueToken(JwtSettings jwtSettings, LoginOutput output)
        {
            var authTime  = DateTime.UtcNow;
            var expiresAt = authTime.AddDays(jwtSettings.Validity);

            var claim = new[] {
                new Claim(ClaimTypes.Sid, output.UserId.ToString()),
                new Claim(ClaimTypes.Name, output.User),
                new Claim(ClaimTypes.Role, output.Role)
            };

            //对称秘钥
            var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(jwtSettings.SecretKey));
            //签名证书(秘钥,加密算法)
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);

            //生成token  [注意]需要nuget添加Microsoft.AspNetCore.Authentication.JwtBearer包,并引用System.IdentityModel.Tokens.Jwt命名空间
            var token = new JwtSecurityToken(jwtSettings.Issuer, jwtSettings.Audience, claim, authTime, expiresAt, creds);

            return(new
            {
                token = new JwtSecurityTokenHandler().WriteToken(token),
                profile = new
                {
                    sid = output.UserId.ToString(),
                    name = output.User,
                    role = output.Role,
                    auth_time = new DateTimeOffset(authTime).ToUnixTimeSeconds(),
                    expires_at = new DateTimeOffset(expiresAt).ToUnixTimeSeconds()
                }
            });
        }
Exemplo n.º 9
0
        public override ApiHandlerOutput Process(ApiInputHandler input)
        {
            PasswordRequest request = GetEntity <PasswordRequest>(input);

            string username = request.Username;

            if (String.IsNullOrWhiteSpace(username))
            {
                username = Context.Current.User.Username;
            }

            LoginOutput loginOutput = Business.User.Login(username, request.Old);

            if (loginOutput.Result == LoginResult.Failed)
            {
                throw new ApiAccessDeniedException(Messages.WrongPassword);
            }

            if (request.Old == request.New)
            {
                throw new ApplicationException(Messages.PasswordChangeSame);
            }

            if (request.New != request.Confirm)
            {
                throw new ApplicationException(Messages.PasswordDontMatch);
            }

            Business.User.ChangePassword(username, request.Old, request.New);

            return(GetOutput());
        }
Exemplo n.º 10
0
        public IActionResult PostLogin([FromBody()] Login loginInfo)
        {
            LoginOutput output = new LoginOutput();

            if (!ModelState.IsValid)
            {
                output.result = "驗證失敗!";
                return(Ok(output));
            }

            var user = _context.User.FirstOrDefault(x => x.UserId == loginInfo.userId && x.Password == loginInfo.password);

            if (user == null)
            {
                output.result = "帳號或密碼輸入錯誤!";
                return(Ok(output));
            }

            // 取得ClientIP
            string ClientIP = HttpContext.Connection.RemoteIpAddress.ToString();

            // 產生Token
            var UToken = Guid.NewGuid().ToString().ToUpper();

            // 設定token逾時分鐘數
            int TimeoutMinute = 20;

            // 計算逾時時間
            DateTime UtokenTime = DateTime.Now.AddMinutes(TimeoutMinute);

            // 刪除所有逾時Token資料
            var timeoutToken = _context.Utoken.Where(x => x.UTokenTimeOut < DateTime.Now && x.UserId == user.UserId).ToList();

            if (timeoutToken.Count > 0)
            {
                _context.Utoken.RemoveRange(timeoutToken);
            }

            // 新增本次登入token資料
            Utoken newToken = new Utoken()
            {
                UserId        = user.UserId,
                User          = user,
                IP            = ClientIP,
                UtokenId      = UToken,
                LastInTime    = DateTime.Now,
                UTokenTimeOut = UtokenTime
            };

            _context.Utoken.Add(newToken);
            _context.SaveChanges();

            output = new LoginOutput
            {
                result = "登入成功!",
                uToken = newToken.UtokenId
            };

            return(Ok(output));
        }
Exemplo n.º 11
0
        public ResponseModelBase <LoginOutput> CreateToken(LoginOutput login)
        {
            var dataCriacao   = DateTime.UtcNow;
            var dataExpiracao = dataCriacao + TimeSpan.FromSeconds(_tokenConfiguration.Seconds);

            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.NameIdentifier, login.PersonOutput.Id.ToString()),
                new Claim(ClaimTypes.Name, login.PersonOutput.Name)
            };

            foreach (var role in login.PersonOutput.Roles)
            {
                claims.Add(new Claim(ClaimTypes.Role, role.Name));
            }

            var token = new JwtSecurityToken(
                _tokenConfiguration.Issuer,
                _tokenConfiguration.Audience,
                claims,
                dataCriacao,
                dataExpiracao,
                _keyConfig.SigningCredentials);

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

            login.Token = jwt;

            return(new ResponseModelBase <LoginOutput>().OkResult(login, new List <string>()));
        }
Exemplo n.º 12
0
        public ResponseData ValidateUser(Login user)
        {
            EncryptDecrypt objEncDec = new EncryptDecrypt();

            try{
                ResponseData   response = new ResponseData();
                AccountDetails act      = new AccountDetails();
                var            result   = db.UserMaster.Where(x => x.UserName == user.username && x.Password == user.password).FirstOrDefault();
                LoginOutput    output   = new LoginOutput();
                if (result != null)
                {
                    output.status = "True";
                    IQueryable <AccountDetails> output1 = db.AccountDetails.Where(x => x.Name == user.username);
                    output.AccountId = output1.Select(x => x.AccountId).FirstOrDefault();
                    response.Data    = output;
                    return(response);
                }

                else
                {
                    output.status    = "False";
                    response.Data    = output;
                    response.Message = CustomMessage.InvalidCreds;
                    response.Code    = (int)HttpStatusCode.BadRequest;

                    return(response);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        private void buttonLogin_Click(object sender, EventArgs e)
        {
            bool fieldsAreFilled = true;

            //verifica se usuario foi inserido
            if (textBoxUsuario.Text.Equals(""))
            {
                this.labelInsiraUsuario.Text    = "Insira o usuário!";
                this.labelInsiraUsuario.Visible = true;
                fieldsAreFilled = false;
            }
            else
            {
                this.labelInsiraUsuario.Visible = false;
            }

            //verifica se a senha foi inserida
            if (textBoxSenha.Text.Equals(""))
            {
                this.labelInsiraSenha.Text    = "Insira a senha!";
                this.labelInsiraSenha.Visible = true;
                fieldsAreFilled = false;
            }
            else
            {
                this.labelInsiraSenha.Visible = false;
            }

            if (fieldsAreFilled)
            {
                //tentar login do usuário
                LoginOutput loginOutput = repoUsuarios.ExecutaLogin(textBoxUsuario.Text, textBoxSenha.Text);

                switch (loginOutput)
                {
                case LoginOutput.Succeeded:
                    this.textBoxUsuario.Text = "";
                    this.textBoxSenha.Text   = "";
                    formPrincipal            = new FormPrincipal(this);
                    formPrincipal.Show();
                    this.Hide();
                    break;

                case LoginOutput.UserNotFound:
                    this.labelInsiraUsuario.Text    = "Usuário não encontrado!";
                    this.labelInsiraUsuario.Visible = true;
                    break;

                case LoginOutput.WrongPassword:
                    this.labelInsiraSenha.Text    = "Senha incorreta!";
                    this.labelInsiraSenha.Visible = true;
                    break;

                default:
                    break;
                }
            }
        }
Exemplo n.º 14
0
        public JsonResult Login(LoginDto loginDto)
        {
            if (string.IsNullOrEmpty(loginDto.Account))
            {
                return(Result(false, "用户名不能为空"));
            }
            if (string.IsNullOrEmpty(loginDto.Password))
            {
                return(Result(false, "密码不能为空"));
            }
            var    output = new LoginOutput();
            SysLog sysLog = new SysLog();

            try
            {
                var user = _sysUserService.LoginValidate(loginDto.Account.Trim(), loginDto.Password.Trim());
                if (user != null)
                {
                    output.Id       = user.Id;
                    output.Account  = user.Account;
                    output.RealName = user.RealName;

                    #region 更新用户登录信息

                    user.Id = user.Id;
                    user.LoginCount++;
                    if (user.FirstVisit == null)
                    {
                        user.FirstVisit = DateTime.Now;
                    }
                    user.LastVisit = DateTime.Now;
                    _sysUserService.UpdateUserLoginInfo(user);

                    #endregion

                    sysLog.LogStatus = (int)LogStatusType.Success;
                }
                else
                {
                    sysLog.LogStatus = (int)LogStatusType.Fail;
                    return(Result(false, "用户名或密码错误"));
                }

                #region 登录日志

                sysLog.IpAddress = "";
                sysLog.LogType   = LogTypeType.Login.ToString();
                sysLog.Remark    = "";
                _sysLogService.InsertLog(sysLog);

                #endregion
            }
            catch (Exception ex)
            {
                return(Result(false, "登录异常" + ex));
            }
            return(GetToken(output));
        }
Exemplo n.º 15
0
        /// <summary>
        /// 登录接口
        /// </summary>
        /// 作者:赵雪峰 20160906
        public bool Login(LoginInput input, ref LoginOutput output, ref string errMsg)
        {
            bool doLogin = HttpCommonMethod <LoginInput, LoginOutput>("/antuser/user.login.do", GlobalVariable.RequestMethod.POST, input, ref output, ref errMsg);

            if (doLogin && output.result == (int)GlobalVariable.Result.Failure)
            {
                errMsg = string.IsNullOrEmpty(output.errorCode) ? "登录失败" : resources.GetString("E_" + output.errorCode);
                return(false);
            }
            return(doLogin);
        }
Exemplo n.º 16
0
        private JsonResult GetToken(LoginOutput output)
        {
            var token = _userToken.Create(new[]
            {
                new Claim(LoginUserDto.Id.ToString(), output.Id.ToString()),
                new Claim(LoginUserDto.Account, output.Account),
                new Claim(LoginUserDto.RealName, output.RealName),
            });

            return(Result(new { token }));
        }
        public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });

            string wechatLoginKey = ConfigurationManager.AppSettings["wxLoginKey"];


            var identity = new ClaimsIdentity("JWT");


            #region 系统登录
            using (var userService = IocManager.Instance.ResolveAsDisposable <IUserService>())
            {
                LoginOutput output = userService.Object.Login(new LoginInput {
                    Password = context.Password, UserName = context.UserName
                });

                if (!output.Id.HasValue)
                {
                    context.SetError("invalid_grant", "账户或密码错误");
                    return(Task.FromResult <object>(null));
                }


                identity.AddClaim(new Claim("UserId", output.Id.ToString()));
                identity.AddClaim(new Claim("UserName", output.UserName));


                string targetName = !string.IsNullOrEmpty(output.ActualName) ? output.ActualName : output.Nickname;
                identity.AddClaim(new Claim("NickName", !string.IsNullOrEmpty(targetName) ? targetName : ""));


                identity.AddClaim(new Claim("UserType", output.UserType.ToString()));
                identity.AddClaim(new Claim("RoleId", output.RoleId.ToString()));
                identity.AddClaim(new Claim("Role", output.Role));
            }
            #endregion


            var props = new AuthenticationProperties(new Dictionary <string, string>
            {
                {
                    "audience", context.ClientId ?? string.Empty
                }
            });

            var ticket = new AuthenticationTicket(identity, props);
            context.Validated(ticket);
            return(Task.FromResult <object>(null));
        }
Exemplo n.º 18
0
        private string GetJwtToken(LoginOutput loginOutput)
        {
            //如果是基于用户的授权策略,这里要添加用户;如果是基于角色的授权策略,这里要添加角色
            var claims = new List <Claim>
            {
                new Claim(ClaimTypes.Name, loginOutput.LoginName),
                new Claim(JwtRegisteredClaimNames.Sid, loginOutput.Id.ToString()),
                new Claim(ClaimTypes.Expiration, DateTime.Now.AddSeconds(_jwtSetting.Value.ExpireSeconds).ToString(CultureInfo.InvariantCulture)),
                new Claim(ClaimTypes.Role, "Type"),
                new Claim("mobile", loginOutput.Mobile)
            };
            var token = JwtHelper.BuildJwtToken(claims.ToArray(), _jwtSetting);

            return(token);
        }
Exemplo n.º 19
0
        public override ApiHandlerOutput Process(ApiInputHandler input)
        {
            LoginRequest request = GetEntity <LoginRequest>(input);

            LoginOutput loginOutput = Business.User.Login(request.Username, request.Password);

            if (loginOutput.Result == LoginResult.Failed)
            {
                throw new ApiAccessDeniedException(Messages.LoginFailed);
            }
            else if (loginOutput.Result == LoginResult.PasswordExpired)
            {
                throw new ApiAccessDeniedException(Messages.PasswordExpired);
            }

            LoginResponse response = new LoginResponse()
            {
                Output = loginOutput
            };

            if (request.Bearer == "true" && loginOutput.User != null)
            {
                string secret = HashHelper.GetSha256(request.Password);

                var p = loginOutput.User.Properties;

                loginOutput.User.Properties.Clear();

                string token = JwtBuilder.Create()
                               .WithAlgorithm(new HMACSHA256Algorithm())
                               .WithSecret(secret)
                               .AddClaim("exp", DateTimeOffset.UtcNow.AddHours(12).ToUnixTimeSeconds())
                               .AddClaim("user", response.Output.User)
                               .Encode();

                logger.Debug($"token generated: {token}");

                Business.User.SaveBearer(loginOutput.User.Id, token);

                response.Bearer = token;

                loginOutput.User.Properties = p;
            }

            input.Context.Session.Set(response.Output.User);

            return(GetOutput(response));
        }
Exemplo n.º 20
0
        public void CheckCanLogin(LoginOutput output)
        {
            Ensure.NotNull(output, nameof(output));
            output.TenantId      = PId;
            output.TenantName    = TenantName;
            output.TenantOutDate = EndTime;

            if (!IsActive)
            {
                output.LoginResult = LoginResult.TenantIsNotActive;
                return;
            }
            if (Clock.Now > EndTime)
            {
                output.LoginResult = LoginResult.TenantOutDate;
            }
        }
        private void loginCallback(LoginOutput output)
        {
            this.Dispatcher.BeginInvoke(delegate()
            {
                if (output.status == "ok")
                {
                    server.sid = output.sid;
                    MDEDB.SubmitChanges();

                    MessageBox.Show("Logged in on server.");
                    joinMeeting();
                }
                else
                {
                    MessageBox.Show("Login or password incorrect.");
                }
            });
        }
Exemplo n.º 22
0
        public LoginOutput Login([Required] string Code)
        {
            string apiUrl            = string.Format(wxLoginApi, ConfigurationManager.AppSettings["wxAppid"], ConfigurationManager.AppSettings["wxAppsercret"], Code);
            JavaScriptSerializer js  = new JavaScriptSerializer();
            WechatLoginMsg       msg = js.Deserialize <WechatLoginMsg>(HttpHelper.HttpGet(apiUrl));

            if (!string.IsNullOrWhiteSpace(msg.Openid) && !string.IsNullOrWhiteSpace(msg.Session_key))
            {
                LoginOutput output = _userAppService.WechatLogin(new WechatLoginInput {
                    Openid = msg.Openid, Session_key = msg.Session_key
                });
                return(output);
            }
            else
            {
                throw new UserFriendlyException(msg.Errcode, msg.Errmsg);
            }
        }
        private void loginCallback(LoginOutput output)
        {
            this.Dispatcher.BeginInvoke(delegate()
            {
                setControlEnabled(true);
                if (output.status == "ok")
                {
                    var servers = new ObservableCollection <Server>(from Server s in MDEDB.Servers where s.serverName == serverNameBox.Text select s);
                    Server server;
                    if (servers.Count() > 0)
                    {
                        //We are here right after registration. We should only add sid.
                        server     = servers[0];
                        server.sid = output.sid;
                        MDEDB.SubmitChanges();
                        NavigationService.GoBack();
                    }
                    else
                    {
                        server = new Server();
                        MDEDB.Servers.InsertOnSubmit(server);
                        server.serverName = serverNameBox.Text;
                        server.address    = serverAddressBox.Text;
                        server.login      = loginBox.Text;
                        server.pass       = passwordBox.Password;
                        server.sid        = output.sid;

                        MDEDB.SubmitChanges();

                        string url = serverUrl + "/api/account/getdata/" + loginBox.Text + "/" + output.sid;
                        new HttpGetRequest <PersonalDataOutput>(url, personalDataCallback);

                        MessageBox.Show("Logged in on server.");
                        NavigationService.GoBack();
                    }
                }
                else
                {
                    MessageBox.Show("Unable to login on server:\n" + output.reason);
                }
            });
        }
Exemplo n.º 24
0
        private string login()
        {
            BasicInput  LoginInputObj  = new BasicInput();
            LoginOutput LoginOutputObj = new LoginOutput();
            Security    secObj         = new Security();

            LoginInputObj.agentMsIsdn = AppConfiguration.VinaPhoneAgentMsIsdl;
            //LoginInputObj.password = secObj.GetSHA1Hash(secObj.Epay_Decrypt(Password, PasswordKey));
            LoginInputObj.password = secObj.GetSHA1Hash(AppConfiguration.VinaPhonePassword); //fEqNCco3Yq9h5ZUglD3CZJT4lBs=
            LoginInputObj.username = AppConfiguration.VinaPhoneUserName;

            try
            {
                LoginOutputObj = eloadObj.login(LoginInputObj);
                if (LoginOutputObj.status == "0")
                {
                    transObj.WriteLog("Login Vinaphone successful, sessionid=" + LoginOutputObj.sessionid);
                }
                else
                {
                    transObj.WriteLog("Login Vinaphone fail, status=" + LoginOutputObj.status + ", message=" + LoginOutputObj.message);
                }
                //Console.WriteLine("login() result:");
                //Console.WriteLine("status=" + LoginOutputObj.status + ", message=" + LoginOutputObj.message);
            }
            catch (Exception ex)
            {
                transObj.WriteLog("Login Vinaphone fail, exception=" + ex.ToString());
                return("");
            }


            //if successfull
            if (LoginOutputObj.status == "0")
            {
                return(LoginOutputObj.sessionid);
            }
            else
            {
                return("");
            }
        }
Exemplo n.º 25
0
        public async Task <LoginOutput> Login(LoginInput input)
        {
            var user = await _userRepository.FindUserByUserName(input.LoginName);

            if (user == null)
            {
                user = await _userRepository.FindUserByPhoneNumber(input.LoginName);
            }

            if (user == null)
            {
                user = await _userRepository.FindUserByEmail(input.LoginName);
            }

            if (user == null)
            {
                throw new BusinessException("登录失败,用户不存在或密码错误!");
            }

            var verifyPasswordHash = new PasswordHasher <User>();

            var verifyResult = verifyPasswordHash.VerifyHashedPassword(user, user.Password, input.Password);

            if (verifyResult == PasswordVerificationResult.Failed)
            {
                throw new BusinessException("登录失败,用户不存在或密码错误!");
            }

            var loginResult = new LoginOutput
            {
                IsSuccess = verifyResult != PasswordVerificationResult.Failed,
                UserName  = user.UserName,
                Claims    = new List <Claim>
                {
                    new Claim(ClaimTypes.Name, user.UserName),
                    new Claim(ClaimTypes.Email, user.Email),
                    new Claim(ClaimTypes.MobilePhone, user.PhoneNumber)
                }
            };

            return(loginResult);
        }
Exemplo n.º 26
0
        private bool Login()
        {
            LoginInput input = new LoginInput();

            input.os          = (int)GlobalVariable.OSType.PC;
            input.osStr       = "";
            input.version     = GlobalVariable.Version;
            input.loginName   = cmb_id.Text;
            input.password    = txt_pwd.PasswordStr;
            input.manufacture = "";
            output            = new LoginOutput();
            string errMsg = string.Empty;

            if (!HttpService.Instance.Login(input, ref output, ref errMsg))
            {
                MessageBoxWindow.Show("登录失败:" + errMsg, this);
                return(false);
            }
            return(true);
        }
Exemplo n.º 27
0
        public static LoginOutput Login(string username, string password)
        {
            logger.Info($"Login request for user {username}");

            LoginOutput output = new LoginOutput()
            {
                Result = LoginResult.Success,
                User   = storage.Login(username, password)
            };

            if (output.User == null)
            {
                output.Result = LoginResult.Failed;
            }
            else
            {
                List <Entities.Domain> domains = storage.GetDomains(output.User.Username);

                if (domains != null && domains.Count > 0 && output.User.DomainId != Guid.Empty)
                {
                    output.User.Domain = domains.Where(x => x.Id == output.User.DomainId).FirstOrDefault();
                }

                int passwordDays = (int)DateTime.Now.Subtract(DateTimeHelper.GetFromUnixTimestamp(output.User.PasswordChanged)).TotalDays;

                if (passwordDays >= Settings.GetInt("PasswordLifetimeInDays"))
                {
                    output.Result = LoginResult.PasswordExpired;
                }
                else
                {
                    output.User.Properties = storage.LoadProperties(output.User);
                }
            }

            string json = JsonHelper.Serialize(output);

            logger.Info(json);

            return(output);
        }
Exemplo n.º 28
0
Arquivo: User.cs Projeto: d18zj/qim
        /// <summary>
        ///     用户登录
        /// </summary>
        /// <param name="password">用户的密码</param>
        /// <param name="output"></param>
        public void UserLogin(string password, LoginOutput output)
        {
            Ensure.NotNull(output, nameof(output));
            if (!ValidPassword(password))
            {
                output.LoginResult = LoginResult.InvalidPassword;
                return;
            }
            if (!IsActive)
            {
                output.LoginResult = LoginResult.UserIsNotActive;
                return;
            }


            LastLoginTime = DateTime.Now;
            LoginCount++;
            output.LoginResult = LoginResult.Success;
            output.UserAccount = UserAccount;
            output.UserName    = UserName;
        }
        public LoginOutput Login(LoginInput input)
        {
            string      passwordMd5 = Encrypt.MD5ByHash(input.Password);
            var         user        = _userRepository.FirstOrDefault(t => t.UserName == input.UserName && t.Password == passwordMd5 && t.IsDeleted == false);
            LoginOutput output      = new LoginOutput();

            if (user == null)
            {
                return(output);
            }
            output = user.MapTo <LoginOutput>();
            if (output.RoleId.HasValue)
            {
                output.Role = _roleRepository.Get((Guid)output.RoleId)?.RoleName;
            }

            user.LastLoginTime = Clock.Now;
            _userRepository.UpdateAsync(user);

            return(output);
        }
Exemplo n.º 30
0
        public async Task <IActionResult> LoginUser([FromBody] LoginModel model)
        {
            LoginOutput loginOutput = new LoginOutput();

            if (ModelState.IsValid)
            {
                Login userLogin = new Login(_signInManager, _userManager, _configuration);

                loginOutput = await userLogin.UserLogin(model);

                return(Ok(loginOutput));
            }
            else
            {
                loginOutput.ErrorCode        = LoginOutput.ErrorCodes.NullRequest;
                loginOutput.ErrorDescription = "Model is not valid";
                loginOutput.Token            = null;

                return(BadRequest(loginOutput));
            }
        }