Доступ к данным по ролям (авторизация)
Помогите пожалуйста сделать доступ к 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;
}
}