public async Task GetProfileDataAsync(ProfileDataRequestContext context) { // TODO: how to know if user is external?? using (var ctx = contextFactory.NewUserDbContext()) { var user = await GetUser(ctx, context.Subject); if (user != null) { var claims = BuildClaims(user, context.RequestedClaimTypes); context.IssuedClaims = claims; } else { var claims = new List <Claim>(); Action <string, string> addClaim = (type, value) => { claims.Add(new Claim(type, value)); }; addClaim("sub", "SUBJECT_ID"); addClaim("name", "IDENTITY_NAME"); context.IssuedClaims = claims; } } }
public async Task <User> AuthenticateAsync(LoginInfo info) { using (var ctx = dbFactory.NewUserDbContext()) { var user = await ctx.Users.FirstOrDefaultAsync(x => x.Username == info.Username); var pwSalt = (info?.Password ?? string.Empty) + (user?.Salt ?? string.Empty); var pwHash = hashProvider.ComputeHash(pwSalt); if (user?.Password != pwHash) { user = null; } return(user); } }
public async Task Handle(UserRegisteredEvent @event) { logger.LogInformation($"Received event: {@event.FirstName} {@event.LastName} ({@event.Email}) has registered."); var newUser = new User { EffectiveDate = DateTime.UtcNow, UserStatus = "Active", Username = @event.Email, Password = @event.Password, Salt = @event.Salt, TermsOfUseAcceptanceDate = @event.AgreeToTerms, CreateDate = DateTime.UtcNow, LastModifiedDate = DateTime.UtcNow }; using (var ctx = contextFactory.NewUserDbContext()) { //Probably not a great way of doing this, need a user for audit fields. var theFirstUser = ctx.Users.OrderBy(x => x.UserId).First(); var role = ctx.Roles.FirstOrDefault(r => r.Name == @event.Role); if (role == null) { role = new Role { Name = @event.Role, Description = @event.Role, CreateDate = DateTime.UtcNow, LastModifiedDate = DateTime.UtcNow, CreateUserId = theFirstUser.UserId, LastModifiedUserId = theFirstUser.UserId }; ctx.AddRole(role); } newUser.CreateUserId = theFirstUser.UserId; newUser.LastModifiedUserId = theFirstUser.UserId; newUser.UserRoles = new List <UserRole> { new UserRole { User = newUser, Role = role } }; ctx.AddUser(newUser); await ctx.SaveChangesAsync(); } }
/// <summary> /// Finds the user by subject identifier. /// </summary> /// <param name="subjectId">The subject identifier.</param> /// <returns></returns> public User FindBySubjectId(Guid subjectId) { using (var ctx = contextFactory.NewUserDbContext()) { return(ctx.Users.FirstOrDefault(x => x.UserId == subjectId)); } }