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!");
        }
Ejemplo n.º 2
0
        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();
            }
        }
Ejemplo n.º 3
0
        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,
            }
                );;
        }
Ejemplo n.º 4
0
        /// <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.");
        }