Esempio n. 1
0
        //   [ValidateAntiForgeryToken]
        public async Task <IActionResult> RegisterFBUser([FromBody] RegisterUserModelDto model)
        {
            if (ModelState.IsValid)
            {
                var user = new User
                {
                    UserName   = model.CustomUserInfo.Email,
                    Email      = model.CustomUserInfo.Email,
                    UserLogo   = model.CustomUserInfo.UserLogo,
                    FacebookId = model.CustomUserInfo.FacebookId
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, model.SysUserInfo);

                    if (result.Succeeded)
                    {
                        await _signInManager.SignInAsync(user, isPersistent : false);

                        return(Ok(await Token(user)));
                    }
                }
                AddErrors(result);
            }

            return(BadRequest(ModelState));
        }
Esempio n. 2
0
        public async Task <IActionResult> UserRegistration(RegisterUserModelDto model)
        {
            try
            {
                var registerResult = await _userManagerService.UserRegistration(model);

                if (registerResult.IsEmailTaken)
                {
                    var resp = new ResponseDataObject <RegistrationResponse>
                    {
                        Data    = registerResult,
                        Message = "Email Address already taken, Please Use another or login",
                        Status  = true,
                    };
                    return(Ok(resp));
                }
                if (registerResult.IsSucceeded)
                {
                    var resp = new ResponseDataObject <RegistrationResponse>
                    {
                        Data    = registerResult,
                        Message = "User registration was successful",
                        Status  = true,
                    };
                    return(Ok(resp));
                }
                if (registerResult == null)
                {
                    var resp = new ResponseDataObject
                    {
                        Message = "User registration failed, Please contact Admin",
                        Status  = true,
                    };
                    return(Ok(resp));
                }
                return(BadRequest("User Registration Failed"));
            }
            catch (Exception ex)
            {
                return(BadRequest(ex));
            }
        }
        public async Task <IActionResult> RegisterUser([FromBody] RegisterUserModelDto userModelDto)
        {
            var user      = _mapper.Map <UserModel>(userModelDto);
            var foundUser = await _userManager.FindByPhoneNumber(user.PhoneNumber);

            if (foundUser != null)
            {
                var ir = IdentityResult.Failed(new IdentityError()
                {
                    Code = "invalidPhone", Description = "Phone number is already registered"
                });
                return(BadRequest(ir));
            }
            var result = await _userManager.CreateAsync(user, userModelDto.Password);

            if (result.Succeeded)
            {
                return(CreatedAtAction(nameof(RetrieveUserByEmail), new { email = user.Email }, new {}));
            }
            return(BadRequest(result.Errors));
        }
Esempio n. 4
0
        public async Task <RegistrationResponse> UserRegistration(RegisterUserModelDto modelDto)
        {
            RegistrationResponse resp;

            if (modelDto == null)
            {
                throw new ArgumentNullException(nameof(modelDto));
            }

            var isEmailTaken = await CheckUserExists(e => e.EmailAddress.Equals(modelDto.EmailAddress));

            if (isEmailTaken != null)
            {
                // if email is already taken
                resp = new RegistrationResponse
                {
                    IsEmailTaken = true,
                    IsSucceeded  = false,
                };
                return(resp);
            }

            //transaction
            using (var _savieTransaction = _userProfileDbContext.Database.BeginTransaction())
            {
                //create password encrypt
                CreatePasswordEncrypt(modelDto.Pasword, out byte[] passwordHash, out byte[] passwordSalt);

                var user = new UserModel
                {
                    Firstname    = modelDto.Firstname,
                    Lastname     = modelDto.Lastname,
                    EmailAddress = modelDto.EmailAddress,
                    PhoneNo      = modelDto.PhoneNo,
                    Password     = modelDto.Pasword,
                    ReferredBy   = modelDto.ReferredBy,
                    PaswordHash  = passwordHash,
                    PasswordSalt = passwordSalt,
                    DateCreated  = DateTime.UtcNow,
                    IsActivated  = false,
                    IsActive     = false,
                };
                await _userProfileDbContext.AddAsync(user);

                await _userProfileDbContext.SaveChangesAsync();

                if (user.Id > 0)
                {
                    //if user registration succeeds and email not taken
                    var rnd  = new Random();
                    var rnd1 = rnd.Next(10, 99);
                    var rnd2 = rnd.Next(100, 999);
                    var rnd3 = rnd.Next(1000, 9999);
                    var code = rnd3 + user.EmailAddress.Substring(3, 5).ToUpper() + rnd2 + rnd1;
                    var name = user.Firstname;

                    if (user.EmailAddress != null && user.PhoneNo != null)
                    {
                        var activationCode = new UserActivationModel
                        {
                            ActivationCode      = code,
                            SentOn              = DateTime.UtcNow,
                            ExpiresAt           = DateTime.UtcNow.AddMinutes(5),//expires after 5 Minutes
                            ActivatedOn         = null,
                            ComfirmedActivation = false,
                            UserModelId         = user.Id,
                        };
                        //save the activation code

                        await _userProfileDbContext.UserActivationModel.AddAsync(activationCode);

                        await _userProfileDbContext.SaveChangesAsync();
                    }
                    _savieTransaction.Commit();

                    // await Task.Run(() => _notification.SendActivationCodeBySMS(name, code, user.PhoneNo));
                    await Task.Run(() => _notification.SendActivationCodeByMail(name, code, user.EmailAddress));

                    resp = new RegistrationResponse
                    {
                        IsSucceeded  = true,
                        IsEmailTaken = false,
                    };

                    return(resp);
                }
            }

            // if user registraion fails
            return(null);
        }