public async Task <(UserModel user, string message)> RegisterUser(SignUpModel model) { var userExists = await repository.FirstOrDefault(r => r.Username == model.Username); if (userExists == null) { AuthUtil.CreatePasswordHash(model.Password, out byte[] passwordHash, out byte[] passwordSalt); var userDetails = new User { CreatedAt = DateTime.Now, PasswordHash = passwordHash, PasswordSalt = passwordSalt, Username = model.Username, Email = model.Email, Role = UserRoles.AppUser }; var newuser = await repository.Insert(userDetails); var returnView = new UserModel { Username = newuser.Username, Email = newuser.Email, Id = newuser.ID }; return(user : returnView, message : "User created successfully."); } return(user : null, message : $"User {model.Username} exists already!"); }
public async static Task Initialize(IServiceProvider serviceProvider) { using (var context = new UnsplashContext( serviceProvider.GetRequiredService <DbContextOptions <UnsplashContext> >())) { // Look for any board games. if (await context.Users.AnyAsync()) { return; // Data was already seeded } var pwd = "012345"; AuthUtil.CreatePasswordHash(pwd, out byte[] passwordHash, out byte[] passwordSalt); context.AddRange( new User { ID = 1, Username = "******", CreatedAt = DateTime.Now, Email = "*****@*****.**", Role = UserRoles.Admin, PasswordHash = passwordHash, PasswordSalt = passwordSalt }, new User { ID = 2, Username = "******", CreatedAt = DateTime.Now, Email = "*****@*****.**", Role = UserRoles.AppUser, PasswordHash = passwordHash, PasswordSalt = passwordSalt }, new Category { ID = 1, CategoryName = "Cars", Description = "For all your automobile photos.", CreatedAt = DateTime.Now, ModifiedAt = DateTime.Now, } ); context.SaveChanges(); } }
public static void Seed(this ModelBuilder modelBuilder) { //create admin password var pwd = "01234Admin"; AuthUtil.CreatePasswordHash(pwd, out byte[] passwordHash, out byte[] passwordSalt); //User modelBuilder.Entity <FXUser>() .HasData( new FXUser { Id = 1, Username = "******", CreatedAt = DateTime.Now, Email = "*****@*****.**", Role = UserRoles.Admin, PasswordHash = passwordHash, PasswordSalt = passwordSalt, IsEmailConfirm = true, IsPhoneNumConfirm = true, } );; }
/// <summary> /// Service method to register a new user /// </summary> /// <param name="model"></param> /// <returns></returns> public async Task <(UserView user, string message)> RegisterUser(SignUp model) { var userExists = await _userrepo.FirstOrDefault(r => r.Username == model.Username || r.Email == model.Email); if (userExists != null) { return(user : null, message : $"User {userExists.Username} exists."); } // Validate Email-add in-app var(IsValid, Email) = AuthUtil.ValidateEmail(model.Email); if (IsValid == false || model.Password.Length == 0) { return(user : null, message : $"Email format incorrect. or Password not inputed"); } if (userExists == null) { AuthUtil.CreatePasswordHash(model.Password, out byte[] passwordHash, out byte[] passwordSalt); var userDetails = new FXUser { CreatedAt = DateTime.Now, PasswordHash = passwordHash, PasswordSalt = passwordSalt, Username = model.Username, Email = model.Email, Role = UserRoles.User }; //Send verification notification Random rand = new Random(); string digits = rand.Next(0, 999999).ToString("D6"); var prepMessageDetails = new EmailMessage(); prepMessageDetails.ToEmail = model.Email; prepMessageDetails.Subject = $"Verify your Email"; prepMessageDetails.Body = $"Your OTP is {digits}"; // TODO: Set expiry on OTP. userDetails.OTP = digits; var newuser = await _userrepo.Insert(userDetails); //send email to user var sendmail = await _mail.SendEmailAsync(prepMessageDetails); if (sendmail) { var returnView = new UserView { Username = newuser.Username, Email = newuser.Email, LastName = model.LastName, FirstName = model.FirstName, Message = $"An Email has been sent to {model.Email} for verification.", IsVerified = false }; return(user : returnView, message : $"User created successfully. Check email {model.Email} for an OTP."); } } return(user : null, message : $"Something went wrong."); }