public HttpResponseMessage AddUser(AddUserParameters parameters) { try { if (!bool.Parse(Utils.GetTabModuleSetting(ActiveModule.TabModuleID, "EnableAdd", "True"))) { return(Request.CreateResponse(HttpStatusCode.Forbidden, "You are not allowed to add users")); } var settings = new AzureConfig(AzureConfig.ServiceName, PortalSettings.PortalId); var graphClient = new GraphClient(settings.AADApplicationId, settings.AADApplicationKey, settings.TenantId); var newUser = new NewUser(parameters.user); if (bool.Parse(Utils.GetTabModuleSetting(ActiveModule.TabModuleID, "EnableAddUsersByUsername", "False")) && !string.IsNullOrEmpty(newUser.Username)) { AddSignInName(newUser, "userName", newUser.Username); } if (bool.Parse(Utils.GetTabModuleSetting(ActiveModule.TabModuleID, "EnableAddUsersByEmail", "True")) && !string.IsNullOrEmpty(newUser.Mail)) { AddSignInName(newUser, "emailAddress", newUser.Mail); newUser.OtherMails = new string[] { newUser.Mail }; } newUser.PasswordProfile.Password = parameters.passwordType == "auto" ? Membership.GeneratePassword(Membership.MinRequiredPasswordLength < 8 ? 8 : Membership.MinRequiredPasswordLength, Membership.MinRequiredNonAlphanumericCharacters < 2 ? 2 : Membership.MinRequiredNonAlphanumericCharacters) : parameters.password; newUser.Mail = null; newUser.Username = null; // Add custom extension claim PortalId if configured var userMapping = UserMappingsRepository.Instance.GetUserMapping("PortalId", settings.UseGlobalSettings ? -1 : PortalSettings.PortalId); if (userMapping != null) { var b2cExtensionName = userMapping.GetB2cCustomAttributeName(PortalSettings.PortalId); if (!string.IsNullOrEmpty(b2cExtensionName)) { newUser.AdditionalData.Add(b2cExtensionName, PortalSettings.PortalId); } } var user = graphClient.AddUser(newUser); // Update group membership UpdateGroupMemberShip(graphClient, user, parameters.groups); // Send welcome email with password if (parameters.sendEmail && !string.IsNullOrEmpty(newUser.Mail)) { SendWelcomeEmail(newUser); } return(Request.CreateResponse(HttpStatusCode.OK, user)); } catch (Exception ex) { return(Request.CreateResponse(HttpStatusCode.InternalServerError, ex.Message)); } }