public async Task <ServiceResponse <LoginResponse> > LoginAsync(LoginRequest request) { var user = await UserManager.FindByEmailAsync(request.Email); if (user == null) { throw new RestException(HttpStatusCode.Unauthorized); } if (user.IsDeleted) { ErrorResultToReturn = new ErrorResult(Errors.AuthErrors.YourAccountWasDeleted); throw new RestException(HttpStatusCode.BadRequest, ErrorResultToReturn); } var result = await _signInManager.CheckPasswordSignInAsync(user, request.Password, false); if (!result.Succeeded) { throw new RestException(HttpStatusCode.Unauthorized); } var generatedToken = await _jwtGenerator.CreateTokenAsync(user); var responseDto = new LoginResponse() { Token = generatedToken.Token, RefreshToken = generatedToken.RefreshToken, }; return(new ServiceResponse <LoginResponse>(HttpStatusCode.OK, responseDto)); }
public async Task <LoginUserResponse> LoginAsync(LoginUserRequest request) { var user = await _context.ApplicationUsers.SingleOrDefaultAsync(u => u.Email == request.Email); if (user == null) { return(null); } var result = await _signInManager.CheckPasswordSignInAsync(user, request.Password, false); if (!result.Succeeded) { return(null); } var generatedToken = await _jwtGenerator.CreateTokenAsync(user); var responseDto = new LoginUserResponse() { Token = generatedToken.Token, RefreshToken = generatedToken.RefreshToken, }; return(responseDto); }
public async Task <UserDto> Handle(Command request, CancellationToken cancellationToken) { if (await _userManager.Users.AnyAsync(x => x.Email == request.Email, cancellationToken: cancellationToken)) { throw new RestException(HttpStatusCode.BadRequest, new { Email = "Email already exists" }); } var user = new AppUser { Email = request.Email, UserName = request.Email, }; var result = await _userManager.CreateAsync(user, request.Password); if (result.Succeeded) { await _userManager.AddToRoleAsync(user, "Student"); return(new UserDto { Email = user.Email, Token = await _jwtGenerator.CreateTokenAsync(user) }); } throw new Exception("Problem creating user"); }
public async Task <UserDto> Handle(Query request, CancellationToken cancellationToken) { var site = await _context.Sites.FirstOrDefaultAsync(x => x.SiteType == SiteTypeEnum.Blog); var user = await _userManager.FindByEmailAsync(request.Email); if (user == null) { await _logger.LogActivity( site.Id, ActivityCodeEnum.UserLogin, ActivitySeverityEnum.Medium, ActivityObjectEnum.User, "Login failed. The requested email address or username does not exist."); throw new RestException(HttpStatusCode.Unauthorized); } user.LastLoginDate = DateTime.UtcNow; var result = await _signInManager.CheckPasswordSignInAsync(user, request.Password, false); if (result.Succeeded) { user.LastLoginDate = DateTime.UtcNow; await _context.SaveChangesAsync(); await _logger.LogActivity( site.Id, ActivityCodeEnum.UserLogin, ActivitySeverityEnum.Low, ActivityObjectEnum.User, $"A user with the username \"{user.UserName}\" has been logged in successfully."); var claims = await _userManager.GetClaimsAsync(user); return(new UserDto { DisplayName = user.DisplayName, Token = await _jwtGenerator.CreateTokenAsync(user, claims.ToList()), UserName = user.UserName, Role = user.Role, //ProfilePhotoName = user.CreatedAttachments?.FirstOrDefault(x => x.Type == AttachmentTypeEnum.Photo && x.IsMain)?.FileName }); } await _logger.LogActivity( site.Id, ActivityCodeEnum.UserLogin, ActivitySeverityEnum.Medium, ActivityObjectEnum.User, "Login faild. Password is incorrect!"); throw new RestException(HttpStatusCode.Unauthorized); }
public async Task <Response <LoginDto> > Handle(LoginQuery request, CancellationToken cancellationToken) { var(user, result) = await _identityService.SignInAsync(request.Email, request.Password); if (result.Succeeded) { //generate Token return(new Response <LoginDto>(new LoginDto { DisplayName = user.DisplayName, Token = await _jwtGenerator.CreateTokenAsync(user), UserName = user.UserName, })); } throw new RestException(HttpStatusCode.Unauthorized); }
public async Task <UserDto> Handle(Command request, CancellationToken cancellationToken) { var site = await _context.Sites.SingleOrDefaultAsync(x => x.SiteType == SiteTypeEnum.Blog); if (await _context.Users.Where(x => x.Email == request.Email).AnyAsync()) { throw new RestException(HttpStatusCode.BadRequest, new { Email = "already exists!" }); } if (await _context.Users.Where(x => x.UserName == request.UserName).AnyAsync()) { throw new RestException(HttpStatusCode.BadRequest, new { Username = "******" }); } var user = new User { DisplayName = request.DisplayName, Email = request.Email, UserName = request.UserName, Role = AspianCoreClaimValue.Member, CreatedAt = DateTime.UtcNow }; var createUserResult = await _userManager.CreateAsync(user, request.Password); if (createUserResult.Succeeded) { await _logger.LogActivity( site.Id, ActivityCodeEnum.UserRegister, ActivitySeverityEnum.Low, ActivityObjectEnum.User, $"A user with the username \"{user.UserName}\" has been registered successfully."); return(new UserDto { DisplayName = user.DisplayName, Token = await _jwtGenerator.CreateTokenAsync(user, claim : null), UserName = user.UserName, Role = user.Role }); } throw new Exception("Problem creating user!"); }
public async Task <UserDto> Handle(Command request, CancellationToken cancellationToken) { var user = await _userManager.FindByEmailAsync(request.Email); if (user == null) { throw new RestException(HttpStatusCode.Unauthorized); } var result = await _signInManager.CheckPasswordSignInAsync(user, request.Password, false); if (result.Succeeded) { return(new UserDto { Email = user.Email, Token = await _jwtGenerator.CreateTokenAsync(user) }); } throw new RestException(HttpStatusCode.Unauthorized); }
public async Task <Response <RegisterCommandDto> > Handle(RegisterCommand request, CancellationToken cancellationToken) { var user = new User { DisplayName = request.DisplayName, UserName = request.UserName, Email = request.Email, }; var(result, _) = await _identityService.CreateUserAsync(user, request.Password); if (result.Succeeded.IsNotTrue()) { throw new RestException(HttpStatusCode.BadRequest, "RegisterErrors", result.Errors); } return(new Response <RegisterCommandDto>(new RegisterCommandDto { DisplayName = request.DisplayName, UserName = request.UserName, Token = await _jwt.CreateTokenAsync(user) })); }