Exemple #1
0
        public async Task <IActionResult> Login([FromBody] Login.Request req, [FromServices] AuthDBContext authDB)
        {
            // la: LocalAccount
            var account = await authDB.Accounts.FindAsync(req.account);

            if (account == null)
            {            // Not find account
                return(Ok(new Login.Response
                {
                    resultCode = ProtocolModels.Auth.Login.Response.ResultCode.Ng
                }));
            }

            if (account.hashedPassword != evolib.Util.Hasher.ToPbkdf2(req.password, account.salt))
            {            // Mismatch password
                return(Ok(new Login.Response
                {
                    resultCode = ProtocolModels.Auth.Login.Response.ResultCode.Ng
                }));
            }

            return(Ok(new Login.Response
            {
                resultCode = ProtocolModels.Auth.Login.Response.ResultCode.Ok,
                account = account.account,
                permission = account.permission,
                nickname = account.nickname,
                hostType = account.hostType,
            }));
        }
        public async Task <IActionResult> Login([FromBody] Login.Request req)
        {
            var requester = new AuthenticationServer.ProtocolModels.Auth.Login();

            requester.request.account  = req.account;
            requester.request.password = req.password;

            var response = await requester.PostAsync(AuthenticationServerInfo.Uri);

            if (response == null)
            {
                return(BuildErrorResponse("SeverInternalError"));
            }

            if (response.resultCode == AuthenticationServer.ProtocolModels.Auth.Login.Response.ResultCode.Ng)
            {
                return(BuildErrorResponse("NgAuth"));
            }

            var toolAccount = new KvsModels.ToolAccount(response.account);

            toolAccount.Model.signingKey   = evolib.Util.KeyGen.Get(32);
            toolAccount.Model.lastAuthDate = DateTime.UtcNow;
            await toolAccount.SaveAsync();

            var payload = new EvoToolJwt.Payload();

            payload.accountId = response.account;
            var token = EvoToolJwt.Build(payload, toolAccount.Model.signingKey);

            return(Ok(new Login.Response
            {
                token = token,
            }));
        }
Exemple #3
0
        public async Task <ActionResult <AuthData> > Login(Login.Request request)
        {
            var result = await _mediator.Send(request);

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

            return(Unauthorized("Unable to authorize user"));
        }
Exemple #4
0
        public async Task CanGetToken()
        {
            var loginRequest = new Login.Request()
            {
                Email = UserEmail, Password = Password
            };
            var response = await client.PostAsync("/api/auth/login", HttpClientUtils.CreateContent(loginRequest));

            var data = await response.Content.ReadFromJsonAsync <AuthData>();

            Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);
            Assert.IsNotNull(data);
            Assert.IsTrue(!string.IsNullOrEmpty(data.Token));
        }
        public async Task <Result <string, Error> > Login(Login.Request request)
        {
            var user = await _userManager.FindByEmailAsync(request.Email.ToString());

            if (user == null)
            {
                return(Result.Failure <string, Error>(new Error.BadRequest("Invalid login attempt")));
            }

            var result = await _signInManager.PasswordSignInAsync(user, request.Password, isPersistent : false, lockoutOnFailure : false);

            if (result.Succeeded == false)
            {
                return(Result.Failure <string, Error>(new Error.BadRequest("Invalid login attempt")));
            }

            return(Result.Success <string, Error>(await GenerateSerializedSecurityTokenForUserWithEmail(request.Email)));
        }
Exemple #6
0
        public async Task Initialize()
        {
            factory = new CustomWebApplicationFactory <Startup>();
            client  = factory.CreateClient(new WebApplicationFactoryClientOptions
            {
                BaseAddress = new Uri(BaseURL)
            });

            var loginRequest = new Login.Request()
            {
                Email = UserEmail, Password = Password
            };
            var response = await client.PostAsync("/api/auth/login", HttpClientUtils.CreateContent(loginRequest));

            var data = await response.Content.ReadFromJsonAsync <AuthData>();

            clientUser = factory.CreateClient(new WebApplicationFactoryClientOptions
            {
                BaseAddress = new Uri(BaseURL)
            });

            clientUser.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", data.Token);
        }
Exemple #7
0
        public async Task <Login.Response> Login(Login.Request loginRequest, CancellationToken cancellationToken)
        {
            var user = await _repository.FindWhere(u => u.Name == loginRequest.Name, cancellationToken);

            if (user == null)
            {
                throw new UserNotFoundException(loginRequest.Name);
            }

            if (!user.Password.Equals(loginRequest.Password))
            {
                throw new NoRightsException("Нет прав");
            }

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

            var token = new JwtSecurityToken
                        (
                claims: claims,
                expires: DateTime.UtcNow.AddDays(60),
                notBefore: DateTime.UtcNow,
                signingCredentials: new SigningCredentials(
                    new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuration["Token:Key"])),
                    SecurityAlgorithms.HmacSha256
                    )
                        );

            return(new Login.Response
            {
                Token = new JwtSecurityTokenHandler().WriteToken(token)
            });
        }
Exemple #8
0
 public async Task <string> Login(Login.Request request)
 {
     return(await _mediator.Send(request));
 }
 public Task <Login.Response> Login([FromBody] Login.Request request)
 => _mediator.Send(request);
        public async Task <IActionResult> Login([FromBody] Login.Request req)
        {
            var accountType        = evolib.Account.Type.Unknown;
            var account            = "";
            var hostType           = evolib.HostType.Unknown;
            var accountAccessToken = "";
            var countryCode        = "";


            if (req.password == SystemInfo.BattleServerPassword)
            {
                account  = "ba8b168a-71f2-4fd4-82e3-e427b5714899";
                hostType = HostType.BattleServer;
            }
            else if (req.accountType == evolib.Account.Type.Inky)
            {
                {                // POST login
                    var requester = new evolib.Multiplatform.Inky.Login1();
                    requester.request.temporary_token = req.authToken;
                    var response = await requester.PostAsync(req.authToken);

                    if (response.StatusCode == System.Net.HttpStatusCode.OK && response.Payload.status == "success")
                    {
                        accountAccessToken = response.Payload.data.access_token;
                    }
                    else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized)
                    {
                        return(BuildErrorResponse(Error.LowCode.NgAuth));
                    }
                    else
                    {
                        return(BuildErrorResponse(Error.LowCode.ServerInternalError));
                    }
                }
                {                // GET accounts/me
                    var requester = new evolib.Multiplatform.Inky.AccountsMe();
                    var response  = await requester.GetAsync(accountAccessToken);

                    if (response.StatusCode == System.Net.HttpStatusCode.OK && response.Payload.status == "success")
                    {
                        account     = response.Payload.data.uid.ToString();
                        countryCode = response.Payload.data.country_code;
                    }
                    else if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized)
                    {
                        return(BuildErrorResponse(Error.LowCode.NgAuth));
                    }
                    else
                    {
                        return(BuildErrorResponse(Error.LowCode.ServerInternalError));
                    }
                }

                accountType = req.accountType;
                hostType    = evolib.HostType.Player;
            }
#if DEBUG
            else if (System.Text.RegularExpressions.Regex.IsMatch(req.account, @"^LoadTester([0-9]|[1-9][0-9]{1,5})@BNO$"))
            {
                await Task.Delay(500);

                account     = req.account;
                hostType    = HostType.Player;
                accountType = evolib.Account.Type.LoadTest;
                countryCode = "JP";
            }
            else
            {
                var requester = new AuthenticationServer.ProtocolModels.Auth.Login();
                requester.request.account  = req.account;
                requester.request.password = req.password;

                var response = await requester.PostAsyncXXX(AuthenticationServerInfo.Uri);

                if (response.StatusCode != System.Net.HttpStatusCode.OK)
                {
                    return(BuildErrorResponse(Error.LowCode.ServerInternalError));
                }

                if (response.Payload.resultCode == AuthenticationServer.ProtocolModels.Auth.Login.Response.ResultCode.Ng)
                {
                    return(BuildErrorResponse(Error.LowCode.NgAuth));
                }

                account     = response.Payload.account;
                hostType    = response.Payload.hostType;
                accountType = evolib.Account.Type.Dev1;
                countryCode = "JP";
            }
        public async Task <IActionResult> Login(Login.Request request)
        {
            var result = await _identityService.Login(request);

            return(result.MatchToActionResult(v => Ok(v)));
        }