Example #1
0
        private async Task <ApplicationUser> CreateUserAsync(string userName, string password, string fullName, string email, string phoneNumber, string[] roles)
        {
            TraisiUser applicationUser = new TraisiUser
            {
                UserName       = userName,
                FullName       = fullName,
                Email          = email,
                PhoneNumber    = phoneNumber,
                EmailConfirmed = true,
                IsEnabled      = true
            };

            var result = await _accountManager.CreateUserAsync(applicationUser, roles, password);

            if (!result.Item1)
            {
                throw new Exception($"Seeding \"{userName}\" user failed. Errors: {string.Join(Environment.NewLine, result.Item2)}");
            }

            return(applicationUser);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="user"></param>
        /// <param name="survey"></param>
        /// <returns></returns>
        public async Task <PrimaryRespondent> GetPrimaryRespondentForSurveyAndTraisiUserAsync(TraisiUser user, Survey survey)
        {
            var respondent = await this._appContext.PrimaryRespondents.Where(p => p.Survey == survey && p.User == user)
                             .FirstOrDefaultAsync();

            return(respondent);
        }
Example #3
0
        public async Task <IActionResult> Register([FromBody] UserEditViewModel user)
        {
            //if (!(await _authorizationService.AuthorizeAsync (this.User, Tuple.Create (user.Roles, new string[] { }), Authorization.Policies.AssignAllowedRolesPolicy)).Succeeded)
            //    return new ChallengeResult ();

            try {
                var viewAllUsersPolicy = await _authorizationService.AuthorizeAsync(this.User, Authorization.Policies.ViewAllUsersPolicy);

                bool isGroupAdmin = await this.CanAdminGroups();

                if (!viewAllUsersPolicy.Succeeded && !isGroupAdmin)
                {
                    return(new ChallengeResult());
                }

                if (ModelState.IsValid)
                {
                    if (user == null)
                    {
                        return(BadRequest($"{nameof(user)} cannot be null"));
                    }

                    // force user type to be 'user' to avoid any other type being set through here
                    user.Roles = new string[] { "user" };

                    TraisiUser appUser = Mapper.Map <TraisiUser> (user);

                    var result = await _accountManager.CreateUserAsync(appUser, user.Roles, user.NewPassword);

                    if (result.Item1)
                    {
                        MailgunEmail regEmail = new MailgunEmail()
                        {
                            Receipient           = appUser.Email,
                            Subject              = _localizer["RegistrationEmailSubject"],
                            Template             = "RegistrationEmail",
                            TemplateReplacements = new Dictionary <string, string> ()
                            {
                                { "user_name", appUser.UserName }, { "password", user.NewPassword }
                            }
                        };
                        this._emailer.SendEmail(regEmail);

                        /*var (emailRegSuccess, errorMessage) = await this._emailer.SendEmailAsync(regEmail);
                         * if (!emailRegSuccess)
                         * {
                         * AddErrors(new string[] { errorMessage });
                         * }*/
                        UserViewModel userVM = await GetUserViewModelHelper(appUser.Id);

                        return(CreatedAtAction(GetUserByIdActionName, new { id = userVM.Id }, userVM));
                    }

                    AddErrors(result.Item2);
                }

                return(BadRequest(ModelState));
            } catch (System.Exception ex) {
                return(BadRequest("User Creation Failed: " + ex.Message));
            }
        }