Exemplo n.º 1
0
        public async Task <ActionResultResponse> SaveUsers(string tenantId, string roleId, ICollection <string> userIds)
        {
            // Check role exists by tenantId.
            var isRoleExistsInTenant = await _roleRepository.CheckRoleExistsByTenant(tenantId, roleId);

            if (!isRoleExistsInTenant)
            {
                return(new ActionResultResponse(-1, _sharedResourceService.GetString(ErrorMessage.NotHavePermission)));
            }

            // Delete all user by roleId.
            var result = await _userRoleRepository.DeleteByRoleId(roleId);

            // Add users to user roles.
            if (result == -1 || result > 0)
            {
                var resultAdd = await _userRoleRepository.AddUsers(roleId, userIds);

                return(new ActionResultResponse(resultAdd, resultAdd <= 0
                    ? _sharedResourceService.GetString(ErrorMessage.SomethingWentWrong)
                    : _resourceService.GetString("Update user role successful.")
                                                ));
            }

            return(new ActionResultResponse(-2, _sharedResourceService.GetString(ErrorMessage.SomethingWentWrong)));
        }
Exemplo n.º 2
0
        public async Task <ActionResultResponse> Update(string tenantId, string id, RoleMeta roleMeta)
        {
            if (roleMeta.RolePagePermissions == null || !roleMeta.RolePagePermissions.Any())
            {
                return(new ActionResultResponse(-1, _resourceService.GetString("Please select at least 1 page and permission.")));
            }

            // Check RoleName exists.
            var isNameExists = await _roleRepository.CheckExists(tenantId, id, roleMeta.Name);

            if (isNameExists)
            {
                return(new ActionResultResponse(-2, _resourceService.GetString("Role name already exists. Please try again.")));
            }

            var roleInfo = await _roleRepository.FindByIdAsync(id, new CancellationToken());

            if (roleInfo == null)
            {
                return(new ActionResultResponse(-3, _resourceService.GetString("Role does not exists. Please try again.")));
            }

            if (roleInfo.TenantId != tenantId)
            {
                return(new ActionResultResponse(-4, _sharedResourceService.GetString(ErrorMessage.NotHavePermission)));
            }

            if (roleMeta.ConcurrencyStamp != roleInfo.ConcurrencyStamp)
            {
                return(new ActionResultResponse(-5, _resourceService.GetString("Role has been updated by another staff. You can not update this role.")));
            }

            if (roleInfo.Type == RoleType.BuiltIn)
            {
                return(new ActionResultResponse(-6, _resourceService.GetString("You can not modifi built-In role.")));
            }

            roleInfo.Name             = roleMeta.Name.Trim();
            roleInfo.Description      = roleMeta.Description?.Trim();
            roleInfo.ConcurrencyStamp = Guid.NewGuid().ToString();
            roleInfo.NormalizedName   = roleInfo.Name.StripVietnameseChars().ToUpper();
            var result = await _roleRepository.UpdateAsync(roleInfo, new CancellationToken());

            // Save role pages.
            await UpdateRolePages(roleInfo.Id, roleMeta.RolePagePermissions);

            // Save user roles.
            await SaveUsers();

            return(new ActionResultResponse(result.Succeeded ? 1 : 0, result.Succeeded
                ? _resourceService.GetString("Update role successful.")
                : _sharedResourceService.GetString("Something went wrong. Please contact with administrator.")));

            async Task SaveUsers()
            {
                // Delete all user role.
                await _userRoleRepository.DeleteByRoleId(roleInfo.Id);

                // Add new user role.
                await AddNewUserRole(tenantId, roleInfo.Id, roleMeta.UserIds);
            }
        }