/// <summary> /// 获取用户可见菜单 /// </summary> /// <param name="userIdentifier"></param> /// <returns></returns> public async Task <List <CustomUserMenuItem> > GetUserMenu(Abp.UserIdentifier userIdentifier) { var userMenus = new List <CustomUserMenuItem>(); var menus = GetDefinitionMenu(); await _menuManager.FillUserMenuItems(userIdentifier, menus, userMenus); return(userMenus); }
public NotificationAppService( INotificationDefinitionManager notificationDefinitionManager, IUserNotificationManager userNotificationManager, INotificationSubscriptionManager notificationSubscriptionManager) { _notificationDefinitionManager = notificationDefinitionManager; _userNotificationManager = userNotificationManager; _notificationSubscriptionManager = notificationSubscriptionManager; _userIdentifier = new Abp.UserIdentifier(AbpSession.TenantId, AbpSession.GetUserId()); }
protected virtual async Task CreateUserAsync(CreateOrUpdateUserInput input) { var user = input.User.MapTo <User>(); //Passwords is not mapped (see mapping configuration) user.TenantId = AbpSession.TenantId; //Set password if (!input.User.Password.IsNullOrEmpty()) { CheckErrors(await UserManager.PasswordValidator.ValidateAsync(input.User.Password)); } else { input.User.Password = User.CreateRandomPassword(); } user.Password = new PasswordHasher().HashPassword(input.User.Password); user.ShouldChangePasswordOnNextLogin = input.User.ShouldChangePasswordOnNextLogin; //Assign roles user.Roles = new Collection <UserRole>(); foreach (var roleName in input.AssignedRoleNames) { var role = await _roleManager.GetRoleByNameAsync(roleName); user.Roles.Add(new UserRole { RoleId = role.Id }); } CheckErrors(await UserManager.CreateAsync(user)); await CurrentUnitOfWork.SaveChangesAsync(); //To get new user's Id. //Notifications var userIdentifier = new Abp.UserIdentifier(user.TenantId, user.Id); await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(userIdentifier); await _appNotifier.WelcomeToTheApplicationAsync(user); //Send activation email if (input.SendActivationEmail) { user.SetNewEmailConfirmationCode(); await _userEmailer.SendEmailActivationLinkAsync(user, input.User.Password); } }
public async Task <int> CreateWithAdminUserAsync(string tenancyName, string name, string adminPassword, string adminEmailAddress, bool isActive, int?editionId, bool shouldChangePasswordOnNextLogin, bool sendActivationEmail) { int newTenantId; long newAdminId; using (var uow = _unitOfWorkManager.Begin()) { //Create tenant var tenant = new Tenant(tenancyName, name) { IsActive = isActive, EditionId = editionId }; CheckErrors(await CreateAsync(tenant)); await _unitOfWorkManager.Current.SaveChangesAsync(); //To get new tenant's id. //We are working entities of new tenant, so changing tenant filter using (_unitOfWorkManager.Current.SetFilterParameter(AbpDataFilters.MayHaveTenant, AbpDataFilters.Parameters.TenantId, tenant.Id)) { //Create static roles for new tenant CheckErrors(await _roleManager.CreateStaticRoles(tenant.Id)); await _unitOfWorkManager.Current.SaveChangesAsync(); //To get static role ids //grant all permissions to admin role var adminRole = _roleManager.Roles.Single(r => r.Name == StaticRoleNames.Tenants.Admin); await _roleManager.GrantAllPermissionsAsync(adminRole); //User role should be default var userRole = _roleManager.Roles.Single(r => r.Name == StaticRoleNames.Tenants.User); userRole.IsDefault = true; CheckErrors(await _roleManager.UpdateAsync(userRole)); //Create admin user for the tenant if (adminPassword.IsNullOrEmpty()) { adminPassword = User.CreateRandomPassword(); } var adminUser = User.CreateTenantAdminUser(tenant.Id, adminEmailAddress, adminPassword); adminUser.ShouldChangePasswordOnNextLogin = shouldChangePasswordOnNextLogin; adminUser.IsActive = isActive; CheckErrors(await _userManager.CreateAsync(adminUser)); await _unitOfWorkManager.Current.SaveChangesAsync(); //To get admin user's id //Assign admin user to admin role! CheckErrors(await _userManager.AddToRoleAsync(adminUser.Id, adminRole.Name)); //Notifications await _appNotifier.WelcomeToTheApplicationAsync(adminUser); //Send activation email if (sendActivationEmail) { adminUser.SetNewEmailConfirmationCode(); await _userEmailer.SendEmailActivationLinkAsync(adminUser, adminPassword); } await _unitOfWorkManager.Current.SaveChangesAsync(); await _demoDataBuilder.BuildForAsync(tenant); newTenantId = tenant.Id; newAdminId = adminUser.Id; } await uow.CompleteAsync(); } //Used a second UOW since UOW above sets some permissions and _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync needs these permissions to be saved. using (var uow = _unitOfWorkManager.Begin()) { using (_unitOfWorkManager.Current.SetFilterParameter(AbpDataFilters.MayHaveTenant, AbpDataFilters.Parameters.TenantId, newTenantId)) { var userIdentifier = new Abp.UserIdentifier(newTenantId, newAdminId); await _notificationSubscriptionManager.SubscribeToAllAvailableNotificationsAsync(userIdentifier); await _unitOfWorkManager.Current.SaveChangesAsync(); } await uow.CompleteAsync(); } return(newTenantId); }