Example #1
0
 public IActionResult TeamLogin(TeamLoginPost postInfo)
 {
     try
     {
         return(Ok(_teamLoginManager.TeamLogin(postInfo)));
     }
     catch
     {
         return(NotFound());
     }
 }
        public void InvalidNonExistentAccountLoginFail(TeamLoginPost teamLoginPost)
        {
            // DI of team login
            var _context         = new ApiGatewayContext();
            var teamLoginService = new TeamLoginService(_context);
            var jwtService       = new JWTService();

            var teamLoginManager = new TeamLoginManager(teamLoginService, jwtService);

            // Act login for the registered user.
            var loginresp = teamLoginManager.TeamLogin(teamLoginPost);

            // Assert that login fail
            Assert.IsFalse(loginresp.Status);
        }
        public void ValidTeamLoginPass(TeamRegisterPost teamRegisterPost, TeamLoginPost teamLoginPost)
        {
            // Arrange DI of objects
            var _context = new ApiGatewayContext();
            var teamRegistrationService = new TeamRegistrationService(_context);
            var urlValidationService    = new UrlValidationService(_context);

            var teamRegistrationManager = new TeamRegistrationManager(teamRegistrationService, urlValidationService);

            var creatTeamStatus = teamRegistrationManager.CreateTeamAccount(teamRegisterPost);

            // Assert that team creation is successfull
            Assert.IsTrue(creatTeamStatus.TeamCreate);

            // DI of team login
            var teamLoginService = new TeamLoginService(_context);
            var jwtService       = new JWTService();

            var teamLoginManager = new TeamLoginManager(teamLoginService, jwtService);

            // Act login for the registered user.
            var loginresp = teamLoginManager.TeamLogin(teamLoginPost);

            // Assert that login passed
            Assert.IsTrue(loginresp.Status);

            // Cleanup the team
            var createdTeam = _context.Team.
                              Where(t => teamRegisterPost.Username == t.Username).
                              FirstOrDefault();

            if (createdTeam == null)
            {
                // Failed to delete
                Assert.IsTrue(false);
            }
            _context.Team.Remove(createdTeam);
            _context.SaveChanges();
        }
        /// <summary>
        /// Check if an authentication request is valid
        /// </summary>
        /// <param name="postInfo">Json object representing client credentials</param>
        /// <returns>Json response object</returns>
        public TeamLoginResp TeamLogin(TeamLoginPost postInfo)
        {
            // Check if the username exists.
            var userNameExist = _teamLoginService.CheckUsernameExistence(postInfo.Username);
            var passwordValid = false;

            // If the userNameExist then we grab the password.
            if (userNameExist)
            {
                passwordValid = _teamLoginService.ValidatePassword(postInfo.Username, postInfo.Password, Constants.HashIteration, KeyDerivationPrf.HMACSHA256);
            }

            // If authentication passes return the corresponding json response.
            if (userNameExist && passwordValid)
            {
                // Grab ClientId to return to frontend.
                var clientId = _teamLoginService.GetClientIdFromUsername(postInfo.Username);
                return(new TeamLoginResp()
                {
                    Status = true,

                    // Access token to authorize protected resources.
                    AccessToken = _JWTService.GenerateHmacSignedJWTToken(Constants.Issuer, clientId, Constants.Issuer, DateTime.Now.ToUniversalTime(),
                                                                         DateTime.Now.AddMinutes(Constants.AuthenticationValidMinutes).ToUniversalTime(), Constants.SigningKey),

                    Username = postInfo.Username,
                    ClientId = clientId
                });
            }
            else
            {
                return(new TeamLoginResp()
                {
                    Status = false, AccessToken = null, Username = null, ClientId = null
                });
            }
        }