示例#1
0
        public async Task <ActionResult> Register(AccountVm data)
        {
            try
            {
                using (_entities)
                {
                    //Confirm that model is valid
                    if (!ModelState.IsValid)
                    {
                        return(RedirectToAction("Login", "Home", data));
                    }

                    //Initialise object of user master table
                    var userMaster = _entities.UserMasters.FirstOrDefault(s => s.Email == data.Email.Trim());

                    //Check that details is not null
                    if (userMaster != null)
                    {
                        TempData["Error"] = "This email already registered with us.";
                    }
                    else
                    {
                        //Create HASH & SALT
                        var salt = Utilities.GenerateSalt(32);
                        var hash = Utilities.GenerateHash(data.Password.Trim(), data.Email.Trim(), salt);

                        //Create instance of table
                        userMaster = new UserMaster();
                        userMaster.CopyProperties(data);
                        userMaster.Hash         = hash;
                        userMaster.Salt         = salt;
                        userMaster.CreatedDate  = DateTime.Now;
                        userMaster.IsActive     = true;
                        userMaster.IsTermAccept = true;
                        userMaster.RoleMasterId = (int)EnumList.Roles.Owner;

                        //Todo: Email verification task
                        userMaster.IsEmailVerified = true;

                        _entities.UserMasters.Add(userMaster);
                        await _entities.SaveChangesAsync();

                        //Create response message
                        TempData["Success"] = "Registration done successfully";
                    }

                    return(RedirectToAction("Login"));
                }
            }
            catch (Exception e)
            {
                TempData["Error"] = e.Message;
                throw;
            }
        }