Exemple #1
0
        public async Task <(bool success, string errorMessage)> InstallAsync(string userName, string password, string email, string mobile)
        {
            try
            {
                await SyncDatabaseAsync();

                var administrator = new Administrator
                {
                    UserName = userName,
                    Email    = email,
                    Mobile   = mobile
                };

                await AdministratorRepository.InsertAsync(administrator, password);

                await AdministratorRepository.AddUserToRoleAsync(userName, PredefinedRole.ConsoleAdministrator.GetValue());

                await UserMenuRepository.ResetAsync();

                return(true, string.Empty);
            }
            catch (Exception ex)
            {
                return(false, ex.Message);
            }
        }
        public virtual async Task SetUserMenusAsync(Guid userId, IEnumerable <Guid> menuIds)
        {
            using (var unitOfWork = UnitOfWorkManager.Begin())
            {
                var userMenus = await UserMenuRepository.GetListByUserIdAsync(userId);

                // 移除不存在的菜单
                // TODO: 升级框架版本解决未能删除不需要菜单的问题
                // userMenus.RemoveAll(x => !menuIds.Contains(x.MenuId));
                var dels = userMenus.Where(x => !menuIds.Contains(x.MenuId));
                if (dels.Any())
                {
                    await UserMenuRepository.DeleteManyAsync(dels);
                }

                var adds = menuIds.Where(menuId => !userMenus.Any(x => x.MenuId == menuId));
                if (adds.Any())
                {
                    var addInMenus = adds.Select(menuId => new UserMenu(GuidGenerator.Create(), menuId, userId, CurrentTenant.Id));
                    await UserMenuRepository.InsertAsync(addInMenus);
                }

                await unitOfWork.SaveChangesAsync();
            }
        }
        public virtual async Task SeedUserMenuAsync(
            Guid userId,
            Menu menu,
            Guid?tenantId = null,
            CancellationToken cancellationToken = default)
        {
            if (!await UserMenuRepository.UserHasInMenuAsync(userId, menu.Name, cancellationToken))
            {
                var userMenu = new UserMenu(GuidGenerator.Create(), menu.Id, userId, tenantId);
                await UserMenuRepository.InsertAsync(userMenu);

                var childrens = await MenuRepository.GetChildrenAsync(menu.Id);

                foreach (var children in childrens)
                {
                    await SeedUserMenuAsync(userId, children, tenantId, cancellationToken);
                }
            }
        }
Exemple #4
0
 public virtual async Task SetUserMenusAsync(Guid userId, IEnumerable <Guid> menuIds)
 {
     await UserMenuRepository.SetMemberMenusAsync(userId, menuIds);
 }