ckfinder не признает роль? - PullRequest
0 голосов
/ 04 мая 2010

, если кто-то может помочь с этим, пожалуйста.

Я пытаюсь включить ckeditor и ckfinder в проект Asp.Net Mvc 1. До сих пор все работает нормально. Единственное, что я не могу заставить работать правильно - это Контроль доступа для ckfinder.

Насколько я понимаю, в файле ckfinder / config.ascx переменная строка RoleSessionVar используется для назначения роли, которую нужно ограничить. Значение по умолчанию:

RoleSessionVar = "CKFinder_UserRole";

У меня есть три роли в моем проекте: администраторы, редакторы и участники. Поэтому, чтобы получить мою текущую роль пользователя, я заменяю ее на:

    string currentRole= "";

    if(HttpContext.Current.User.IsInRole("Administrators"))
    {
        currentRole = "Administrators"; 
 }
    else
    {
        if (HttpContext.Current.User.IsInRole("Editors"))
            currentRole = "Editors";
        else
        {
            if (HttpContext.Current.User.IsInRole("Contributors"))
            {
                currentRole = "Contributors";
            }
        }
    }


    RoleSessionVar = currentRole;

Переменная получает правильную роль для текущего пользователя. Следующая часть в файле config.ascx - это настройки ACL. По умолчанию:

 AccessControl acl = AccessControl.Add();
    acl.Role = "*";

acl.ResourceType = "*"; acl.Folder = "/";

    acl.FolderView = true;
    acl.FolderCreate = true;
    acl.FolderRename = true;
    acl.FolderDelete = true;

    acl.FileView = true;
    acl.FileUpload = true;
    acl.FileRename = true;
    acl.FileDelete = true; 

С этими настройками нет проблем с ckfinder, он перечисляет все папки и файлы, но там с полными разрешениями для всех. Я хочу ограничить удаление разрешений для разных ролей. Во всяком случае, в качестве теста я попытался дать полные права администраторам

    AccessControl acl = AccessControl.Add();
    acl.Role = "Administrators";

acl.ResourceType = "*"; acl.Folder = "/";

    acl.FolderView = true;
    acl.FolderCreate = true;
    acl.FolderRename = true;
    acl.FolderDelete = true;

    acl.FileView = true;
    acl.FileUpload = true;
    acl.FileRename = true;
    acl.FileDelete = true; 

Но ckfinder не будет показывать ни одну папку или файл, даже если RoleSessionVar = "Administrators".

Я буду очень благодарен за любую помощь в решении этой проблемы.

Byron

Ответы [ 2 ]

1 голос
/ 15 мая 2010

Вам нужно сделать

Session ["RoleSessionVar"] = currentRole;

0 голосов
/ 05 июля 2013

вам следует попробовать:

Session ["CKFinder_UserRole"] = currentRole;

...