Exemplo n.º 1
0
        public async Task <ActionResult <WebApiLoginResult> > Login(LoginParameters parameters, CancellationToken token)
        {
            var result = new WebApiLoginResult {
                LoginResult          = (int)LoginResult.Failed,
                PasswordChangeResult = (int)PasswordValidateResult.Valid,
            };

            var company = (await companyProcessor.GetAsync(new CompanySearch {
                Code = parameters.CompanyCode
            }, token))?.FirstOrDefault();

            if (company == null)
            {
                return(result);
            }

            var loginUser = (await loginUserProcessor.GetAsync(new LoginUserSearch {
                CompanyId = company.Id,
                Codes = new[] { parameters.UserCode },
            }, token))?.FirstOrDefault();

            if (loginUser == null)
            {
                return(result);
            }

            var loginResult = await loginUserPasswordProcessor.LoginAsync(company.Id, loginUser.Id, parameters.Password, token);

            result.LoginResult = (int)loginResult;
            if (loginResult != LoginResult.Success && loginResult != LoginResult.Expired)
            {
                return(result);
            }

            var authKey    = string.Empty;
            var tenantCode = string.Empty;

            if (!ParseHeader(out authKey, out tenantCode))
            {
                result.LoginResult = (int)LoginResult.Failed;
                return(result);
            }
            var createResult = await authenticationWebApiProcessor.CreateSessionAsync(tenantCode, token);

            if (!createResult.Result)
            {
                result.LoginResult = (int)LoginResult.DBError;
                return(result);
            }
            result.SessionKey = createResult.ErrorMessage;

            return(result);
        }
Exemplo n.º 2
0
 public async Task <LoginProcessResult> LoginAsync(string SessionKey, int CompanyId, int LoginUserId, string Password)
 {
     return(await authorizationProcessor.DoAuthorizeAsync(SessionKey, async token =>
     {
         var result = await loginUserPasswordProcessor.LoginAsync(CompanyId, LoginUserId, Password, token);
         return new LoginProcessResult
         {
             ProcessResult = new ProcessResult {
                 Result = true
             },
             Result = result,
         };
     }, logger));
 }
Exemplo n.º 3
0
        public async Task <UnaryValue <string> > Login(LoginParameters parameters, CancellationToken token)
        {
            var company = (await companyProcessor.GetAsync(new CompanySearch {
                Code = parameters.CompanyCode,
            }, token)).FirstOrDefault() ?? throw new ArgumentException($"companyCode:{parameters.CompanyCode} is not exist.");

            // login user code to user id
            var loginUser = (await loginUserProcessor.GetAsync(new LoginUserSearch {
                CompanyId = company.Id,
                Codes = new[] { parameters.UserCode },
            })).FirstOrDefault() ?? throw new ArgumentException($"usercode:{parameters.UserCode} is not exist.");

            // confirm password
            var loginResult = await loginUserPasswordProcessor.LoginAsync(company.Id, loginUser.Id, parameters.Password, token);

            if (loginResult == LoginResult.Failed)
            {
                throw new ArgumentException("login password incorrect.");
            }

            if (loginResult == LoginResult.DBError)
            {
                throw new ArgumentException("db exception");
            }

            if (loginResult == LoginResult.Expired)
            {
                throw new ArgumentException("login password expired.");
            }

            var authKey    = string.Empty;
            var tenentCode = string.Empty;

            if (!ParseHeader(out authKey, out tenentCode))
            {
                throw new ArgumentException("request header is invalid.");
            }

            // create session key
            var createResult = await authenticationWebApiProcessor.CreateSessionAsync(tenentCode, token);

            if (!createResult.Result)
            {
                throw new InvalidOperationException($"create session failure:{createResult.ErrorMessage}");
            }

            // publish session key /*TODO: ErrorMessage -> Message へ 変更 */
            return(createResult.ErrorMessage.GetUnaryValue());
        }
Exemplo n.º 4
0
 public async Task <ActionResult <LoginResult> > Login(LoginParameters parameters, CancellationToken token)
 => await loginUserPasswordProcessor.LoginAsync(parameters.CompanyId.Value, parameters.LoginUserId.Value, parameters.Password, token);