コード例 #1
0
        public ApiResponse SignIn(AuthSignIn authSignIn)
        {
            AuthRepository authRepository = this.authApplication.SignInFromAPI(authSignIn);
            AuthToken      authToken      = new AuthToken()
            {
                Token     = authRepository.Token,
                ExpiredAt = authRepository.ExpiredAt
            };

            return(new ApiResponseData(HttpStatusCode.OK, authToken));
        }
コード例 #2
0
        /// <summary>
        /// Checks wether Credentials are valid or not
        /// </summary>
        /// <param name="authSignIn">Injected <see cref="AuthSignIn"/></param>
        /// <returns>Instance of <see cref="bool"/></returns>
        public bool CanAuthenticate(AuthSignIn @authSignIn)
        {
            bool @result = false;

            if (ApiSettings.Value.ApiLock.Equals(@authSignIn.UserName) && ApiSettings.Value.ApiKey.Equals(@authSignIn.PassWord))
            {
                @result = true;
            }

            return(@result);
        }
コード例 #3
0
        public void SignIn()
        {
            AuthSignIn viewModel = new AuthSignIn()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            Exception exception = Assert.ThrowsAsync <Exception>(async() => await Service.SignIn(viewModel));

            Assert.Pass();
        }
コード例 #4
0
        /// <summary>
        /// Gets Authentication Ticket
        /// </summary>
        /// <param name="authSignIn">Injected <see cref="AuthSignIn"/></param>
        /// <returns>Instance of <see cref="AuthenticationTicket"/></returns>
        public AuthenticationTicket GetAuthenticationTicket(AuthSignIn @authSign)
        {
            List <Claim> @claims = new()
            {
                new Claim(ClaimTypes.Name, @authSign.UserName),
                new Claim(ClaimTypes.System, Environment.MachineName),
            };

            return(new AuthenticationTicket(
                       new ClaimsPrincipal(identity: new ClaimsIdentity(claims: @claims,
                                                                        authenticationType: Scheme.Name)),
                       authenticationScheme: Scheme.Name));
        }
コード例 #5
0
        public AuthRepository SignInFromAPI(AuthSignIn authSignIn)
        {
            UserRepository userRepo = this.userQueryRepository.FindByEmail(authSignIn.Email);

            if (userRepo.Email == null)
            {
                throw (new DataNotFoundException("Email"));
            }
            else if (!BC.Verify(authSignIn.Password, userRepo.Password))
            {
                throw (new EmailAndPasswordException());
            }

            DateTime expiredAt = DateTime.UtcNow.AddYears(1);

            return(new AuthRepository()
            {
                ExpiredAt = expiredAt,
                Token = AuthUtility.GenerateJwtToken(userRepo.Id)
            });
        }
コード例 #6
0
        /// <summary>
        /// Signs In
        /// </summary>
        /// <param name="viewModel">Injected <see cref="AuthSignIn"/></param>
        /// <returns>Instance of <see cref="Task{ViewApplicationUser}"/></returns>
        public async Task <ViewApplicationUser> SignIn(AuthSignIn @viewModel)
        {
            SignInResult signInResult = await SignInManager.PasswordSignInAsync(@viewModel.Email,
                                                                                @viewModel.Password,
                                                                                false,
                                                                                true);

            if (signInResult.Succeeded)
            {
                ApplicationUser @applicationUser = await FindApplicationUserByEmail(@viewModel.Email);

                @applicationUser.ApplicationUserTokens.Add(new ApplicationUserToken
                {
                    Name            = Guid.NewGuid().ToString(),
                    LoginProvider   = JwtSettings.Value.JwtIssuer,
                    ApplicationUser = @applicationUser,
                    UserId          = @applicationUser.Id,
                    Value           = TokenService.WriteJwtToken(TokenService.GenerateJwtToken(@applicationUser))
                });

                // Log
                string @logData = @applicationUser.GetType().Name
                                  + " with Email "
                                  + @applicationUser.Email
                                  + " logged in at "
                                  + DateTime.Now.ToShortTimeString();

                Logger.WriteUserAuthenticatedLog(@logData);

                return(Mapper.Map <ViewApplicationUser>(@applicationUser));
            }
            else
            {
                throw new Exception("Authentication Error");
            }
        }