Доступ к данным по ролям (авторизация)

Помогите пожалуйста сделать доступ к dataGridView по ролям. Если роль "Admin", которая может добавлять, редактировать и изменять данные, также есть роль "Guest", эта роль может только смотреть на данные.

Код выборки, добавления, удаления и обновления данных о книгах:

public class BookProvider
{
    SqlConnection _connection;

    public BookProvider(SqlConnection connection)
    {
        _connection = connection;
    }

    public List<Book> GetAllBooks()
    {
        List<Book> books = new List<Book>();

        try
        {
            _connection.Open();

            var cmd = new SqlCommand(
                @"
                    SELECT
                        [Books].[Id],
                    FROM 
                        [Books]
                    WHERE
                        [Books].[IsDeleted] = 'False' 
                ",
                _connection
            );

            using (var reader = cmd.ExecuteReader())
            {
                while (reader.Read())
                {
                    var book = new Book
                    {
                        Id = reader.GetInt32(0),
                        Name = reader.GetString(1),
                        Author = reader.GetString(2)
                    };

                    books.Add(book);
                }
            }
        }
        finally
        {
            _connection.Close();
        }

        return books;
    }

    public bool Add(Book book)
    {
        bool ok = false;

        try
        {
            _connection.Open();

            var cmd = new SqlCommand(
                @"
                    INSERT INTO [Books]
                        ([Name], [Author])
                    VALUES
                        (@Name, @Author,)
                ",
                _connection
            );
            cmd.Parameters.AddWithValue("@Name", book.Name);
            cmd.Parameters.AddWithValue("@Author", book.Author);

            ok = cmd.ExecuteNonQuery() > 0;
        }
        finally
        {
            _connection.Close();
        }

        return ok;
    }

    public bool Update(Book updatedBook)
    {
        bool ok = false;

        try
        {
            _connection.Open();

            var cmd = new SqlCommand(
                @"
                    UPDATE [Books]
                    SET
                        [Name] = @Name, 
                    WHERE
                        [Id] = @Id
                ",
                _connection
            );
            cmd.Parameters.AddWithValue("@Id", updatedBook.Id);

            ok = cmd.ExecuteNonQuery() > 0;
        }
        finally
        {
            _connection.Close();
        }

        return ok;
    }

    public bool Delete(int id)
    {
        bool ok = false;

        try
        {
            _connection.Open();

            var cmd = new SqlCommand(
                @"
                    UPDATE [Books]
                    SET
                        [IsDeleted] = 'True'
                    WHERE [Id] = @Id
                ",
                _connection
            );
            cmd.Parameters.AddWithValue("@Id", id);

            ok = cmd.ExecuteNonQuery() > 0;
        }
        finally
        {
            _connection.Close();
        }

        return ok;
    }

}

код юзера:

 public class UserProvider
{
    SqlConnection _connection;
    public UserProvider(SqlConnection connection)
    {
        _connection = connection;
    }

    public UserAuth GetUserByLogin(string login)
    {
        UserAuth user = new UserAuth();
        try
        {
            _connection.Open();
            var command = new SqlCommand(
                @"SELECT * FROM [User]
                  WHERE [Login] = @Login", _connection);
            command.Parameters.AddWithValue("@Login", login);
            using(var reader = command.ExecuteReader())
            {
                while (reader.Read())
                {
                    user = new UserAuth
                    {
                        Id = reader.GetInt32(0),
                        Login = reader.GetString(1),
                        Password = reader.GetString(2),
                        Role = reader.GetString(3)
                    };
                }
            }
        }
        finally
        {
            _connection.Close();
        }
        return user;
    }
}

Ответы (0 шт):