private void AddPermissionDescriptionToAuthorizationInformation <TEntity>(string operation,
                                                                                  AuthorizationInformation info,
                                                                                  IUser user, Permission[] permissions,
                                                                                  TEntity entity)
            where TEntity : class
        {
            string entityDescription         = "";
            string entitiesGroupsDescription = "";

            if (entity != null)
            {
                EntitiesGroup[] entitiesGroups = authorizationRepository.GetAssociatedEntitiesGroupsFor(entity);
                entityDescription         = Security.GetDescription(entity);
                entitiesGroupsDescription = Strings.Join(entitiesGroups);
            }
            if (permissions.Length == 0)
            {
                UsersGroup[] usersGroups = authorizationRepository.GetAssociatedUsersGroupFor(user);

                if (entity == null)                 //not on specific entity
                {
                    info.AddDeny(Resources.PermissionForOperationNotGrantedToUser,
                                 operation,
                                 user.SecurityInfo.Name,
                                 Strings.Join(usersGroups)
                                 );
                }
                else
                {
                    info.AddDeny(Resources.PermissionForOperationNotGrantedToUserOnEntity,
                                 operation,
                                 user.SecurityInfo.Name,
                                 Strings.Join(usersGroups),
                                 entityDescription,
                                 entitiesGroupsDescription);
                }
                return;
            }
            foreach (Permission permission in permissions)
            {
                AddUserLevelPermissionMessage(operation, info, user, permission, entityDescription,
                                              entitiesGroupsDescription);
                AddUserGroupLevelPermissionMessage(operation, info, user, permission, entityDescription,
                                                   entitiesGroupsDescription);
            }
        }