powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Silverlight отображение доступных функций на основе разграничения ролевого доступа
2 сообщений из 2, страница 1 из 1
Silverlight отображение доступных функций на основе разграничения ролевого доступа
    #37992878
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток, друзья. Возможно название топика немного некорректно по отношению к моему вопросу, но, я не смог ничего умнее придумать в 3 часа ночи. Помогите, пожалуйста, разобраться как грамотно реализовать описанные ниже вопросы. Я не прошу давать готовый код - я постараюсь сам до этого додуматься. Мне нужно понять - какими средствами мне необходимо воспользоваться.

У меня есть некое SL бизнес-приложение с настроенной логикой соединения с бд, аутентификацией и поддержкой ролевого доступа. Разумеется, у каждого метода (если это требуется) будет происходить проверка на наличие соответствующего уровня доступа (роли) на выполнение этого метода. Так же, будет некое число ролей и множество пользователей, что, в принципе более чем логично для бизнес-приложения. Далее: планируется большой набор функций, у каждой из которых будет свой список ролей, которые могут воспользоваться этой функцией.

А вопрос теперь в следующем - как бы это реализовать? Мне нужно (желательно) что бы был один список - скажем "картинка"-"название функции" - и это пользователь видит как элемент списка а-ля кнопку (или наоборот - неважно). Это отобразить очень легко благодаря дата_темплейту. НО! Я не представляю как здесь связать метод, который должен вызываться при нажатии на соответствующий пункт списка. При этом, методы, которые заведомо недоступны той или иной роли пользователя - не должны отображаться в этом списке.

Таким образом, примерную логику можно представить следующим образом: имеется список (List/Enumarable/etc) объектов некоего класса (назовём его навскидку Funcs). Пусть этот класс представляет собой запись вида: string/URI pic (ссылка на картинку), string nameFunc (название функции, которое видит пользователь), string[]/string allowRoles (список ролей, которые видят и могут пользоваться этой функцией) и... и тут я застрял ... Далее нужно как-то сослаться на метод, который будет вызывать эта функция. Но как это сделать? Да ещё и грамотно, а не а-бы как.

P.S. для того чтобы слова не перемешивались я называю "методом" - программный метод как он есть, "функция" - указатель какого-то механиза работы программы, который видит пользователь.


Вопрос 2: Так же я себе очень тяжело представляю как дать понять дата_темплейту (или не в нём это делать?), что тот или иной экземпляр класса Funcs из списка всех функций НЕ надо вообще отображать пользователю из-за его низкой роли. Тут даже идей нету, к сожалению.
...
Рейтинг: 0 / 0
Silverlight отображение доступных функций на основе разграничения ролевого доступа
    #37994229
Mans7
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всё :) разобрался!

Спасибо умному дата_темплейту и делегатам!

[РЕШЕНО]

Решение (вдруг кому пригодится):
1. Вопрос отображения я решил логикой прямо в классе
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
public delegate void OperationDelegate();
...
public class DFunc
    {
...
public List<DFunc> GetFuncs(string userRole)
        {
            var newlist = ListofFuncs.Where(dFunc => dFunc.SAllowRoles.Contains(userRole)).ToList();
            return newlist;
        }

static readonly List<DFunc> ListofFuncs = new List<DFunc>
        {
        new DFunc {SPic = "1.jpg", SNameFunc = "Выход", SAllowRoles = "administrator,member", Del = Alo},
         ...                 
        new DFunc {SPic = "4.jpg", SNameFunc = "Пользователи сети", SAllowRoles = "administrator", Del = Alo4},
        };

        private static void Alo()
        {
            MessageBox.Show("Hello! 1");
        }



2. А вопрос вывода в листбокс очень прост (я бы даже сказал, шаблонен):
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
public void test()
        {
            lb.ItemsSource = new DFunc().GetFuncs(WebContext.Current.User.Roles.First());
            if (lb.ItemsSource == null)
                ErrorWindow.CreateNew("Нет доступных функий!");
        }

        private void lb_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            var lb = sender as ListBox;
            var l = lb.ItemsSource as List<DFunc>;
            (lb.SelectedItems[0] as DFunc).Del();
        }



Не очень лаконично написано - но у меня в данный момент времени нету на красоту, так что попрошу её не критиковать.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / WPF, Silverlight [игнор отключен] [закрыт для гостей] / Silverlight отображение доступных функций на основе разграничения ролевого доступа
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]