Здравствуйте, RW, Вы писали:
RW>Приложение должно загрузить и отобразить нужные контролы, дать возможность вызывать методы, в зависимости от того какой пользователь вошел
Результатом авторизации пользователя будет какой-то контекст, в котором будут хранится роли и разрешения текущего пользователя.
Для "отображения нужных контролов" нужно построить модель (представления) на основе контекста, применимую к конкретному представлению — т.е. какой-то класс вида:
public class OrderEditorSecurityViewModel
{
property Boolean IsSaveCommandEnabled { /* ... */ }
property Boolean IsCustomerSelectorEnabled { /* ... */ }
// ...
}
и затем связать экземпляр этого класса с нужными свойствами контролов. Конкретные детали реализации будут зависеть от GUI-фреймворка, которым вы воспользуетесь.
С "методами" сложнее.
Если у вас клиент-сервер, то управления доступностью/видимостью контролов будет достаточно — сделали кнопку disabled, и уже ее обработчик не сработает -> "метод" не выполнится.
Если у вас есть app server, то, по-хорошему, нужно обеспечить разграничение доступа на уровне вызова серверных методов, иначе любой клиент, написанный не вами, сможет делать все, что заблагорассудится. Т.е. в базе хранить разрешения на вызов методов, а при обращении к серверу передавать credentials пользователя, получать контекст с разрешениями и принимать решение — можно или нельзя.