コード例 #1
0
        /// <summary>
        /// Checks Email
        /// </summary>
        /// <param name="viewModel">Injected <see cref="AuthJoinIn"/></param>
        /// <returns>Instance of <see cref="Task{ApplicationUser}"/></returns>
        public async Task <ApplicationUser> CheckEmail(AuthJoinIn @viewModel)
        {
            ApplicationUser @applicationUser = await UserManager.Users
                                               .AsNoTracking()
                                               .TagWith("CheckEmail")
                                               .FirstOrDefaultAsync(x => x.Email == @viewModel.Email);

            if (@applicationUser != null)
            {
                // Log
                string @logData = @applicationUser.GetType().Name
                                  + " with Email "
                                  + @viewModel.Email
                                  + " was already found at "
                                  + DateTime.Now.ToShortTimeString();

                Logger.WriteGetItemFoundLog(@logData);

                throw new Exception(@applicationUser.GetType().Name
                                    + " with Email "
                                    + @viewModel.Email
                                    + " already exists");
            }

            return(@applicationUser);
        }
コード例 #2
0
        /// <summary>
        /// Joins In
        /// </summary>
        /// <param name="viewModel">Injected <see cref="AuthJoinIn"/></param>
        /// <returns>Instance of <see cref="Task{ViewApplicationUser}"/></returns>
        public async Task <ViewApplicationUser> JoinIn(AuthJoinIn @viewModel)
        {
            await CheckEmail(@viewModel);

            ApplicationUser @applicationUser = new()
            {
                UserName           = @viewModel.Email,
                Email              = @viewModel.Email,
                ConcurrencyStamp   = DateTime.Now.ToBinary().ToString(),
                SecurityStamp      = DateTime.Now.ToBinary().ToString(),
                NormalizedEmail    = @viewModel.Email,
                NormalizedUserName = @viewModel.Email,
                LastModified       = DateTime.Now,
                Deleted            = false
            };

            IdentityResult @identityResult = await UserManager.CreateAsync(@applicationUser,
                                                                           @viewModel.Password);

            if (@identityResult.Succeeded)
            {
                return(await SignIn(@viewModel));
            }
            else
            {
                throw new Exception("Authentication Error");
            }
        }
コード例 #3
0
        public void CheckEmail()
        {
            AuthJoinIn viewModel = new AuthJoinIn()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

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

            Assert.Pass();
        }
コード例 #4
0
        public async Task JoinIn()
        {
            AuthJoinIn viewModel = new AuthJoinIn()
            {
                Email    = "*****@*****.**",
                Password = "******"
            };

            await Service.JoinIn(viewModel);

            Assert.Pass();
        }
コード例 #5
0
        /// <summary>
        /// Signs In
        /// </summary>
        /// <param name="viewModel">Injected <see cref="AuthJoinIn"/></param>
        /// <returns>Instance of <see cref="Task{ViewApplicationUser}"/></returns>
        public async Task <ViewApplicationUser> SignIn(AuthJoinIn @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");
            }
        }