Как мне добавить права доступа к моему приложению c # windows form? - PullRequest
0 голосов
/ 05 января 2019

Прежде всего, мне очень жаль, если вопрос уже был задан где-то, но я нигде не смог найти ответ после просмотра. Я довольно новичок в кодировании, так что извините, если это на самом деле невозможно или что-то в этом роде.

Я создал приложение Windows Forms в C # с несколькими панелями, которые сами содержат такие элементы, как текстовые поля и метки. Например, у меня есть панель чата и панель календаря. Я хотел бы как-то встроить права доступа в это на основе привилегий пользователя (уровни доступа хранятся в базе данных, которая уже подключена к приложению). В идеале мне бы хотелось, чтобы после входа в систему пользовательские панели затем инициализировались и создавались как (с точки зрения безопасности), это было бы лучше.

Я не могу предоставить скриншоты или большой объем кода, так как это для оцениваемой части работы, которую мне запрещено размещать в Интернете.

Заранее большое спасибо:)

1 Ответ

0 голосов
/ 05 января 2019

Если я вас правильно понял, то вам нужно сделать if(userHasSomePermission) { CreateComponent }; вместо того, чтобы создавать его раньше, и если у пользователя нет разрешения, отключите / скройте его

Если это так, то это не так уж много науки, но это немного сложно.

Внутри вашего Form конструктора у вас есть метод InitializeComponents(), который хранится в вашем файле Form.Designer.cs. Внутри этого файла вы создаете свои элементы управления.

Что вы можете сделать, это создать больше методов внутри вашего Form.cs, например

private void CreatePanel1()
{
    Panel p = new Panel();
    p.Location = new Point(3, 3);
    p.Size = new Size(50, 50);
    p.BackgroundColor = Color.Black;
    this.Controls.Add(p);
}

и затем внутри вашего конструктора вызовите его, если необходимо:

public Form()
{
    InitializeComponents();

    if( checkIfUserHavePermission )
        CreatePanel1();
}

Таким образом, компоненты внутри нашего метода будут создаваться только при необходимости.

Хитрая часть этого в том, что you will not see components inside designer window, поскольку внутри него нарисованы только те компоненты, которые находятся в Form.Designer.cs/InitializeComponents(). Поэтому любое изменение, которое вы хотите внести, необходимо будет выполнить вручную с помощью кода.

В противном случае, если вы беспокоитесь о безопасности и не хотите просто скрывать / отключать какой-либо элемент управления, вы можете удалить его при необходимости.

Таким образом, вы можете использовать Tag свойство каждого элемента управления и добавить, скажем, Admin_C к каждому элементу управления Tag, который предназначен только для администраторов, и затем сделать это:

public Form()
{
    InitializeComponents();

    if(userIsNotAdmin)
    {
        foreach (Control item in this.Controls)
        {
            if(item.Tag.ToString() == "Admin_C")
                this.Controls.Remove(item); 
        }
    }
}
...