/// <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); }
/// <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"); } }
public void CheckEmail() { AuthJoinIn viewModel = new AuthJoinIn() { Email = "*****@*****.**", Password = "******" }; Exception exception = Assert.ThrowsAsync <Exception>(async() => await Service.CheckEmail(viewModel)); Assert.Pass(); }
public async Task JoinIn() { AuthJoinIn viewModel = new AuthJoinIn() { Email = "*****@*****.**", Password = "******" }; await Service.JoinIn(viewModel); Assert.Pass(); }
/// <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"); } }