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); }
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)); } }