У меня есть пользовательская аутентификация, которую я добавлю в раздел кода ниже на основе 2 таблиц, таблицы сотрудников и таблицы работодателей. Когда работодатель входит в систему, он может видеть свои банковские реквизиты и список всех отчетов сотрудников. Когда сотрудник входит в систему, я хочу, чтобы страница банковских реквизитов работодателя была скрыта, а список всех страниц сотрудника также был скрыт, и я хочу, чтобы вместо этого отображалась страница сведений о сотруднике. Я не уверен, как это сделать вообще. Самой близкой вещью, которую я нашел, была пользовательская схема авторизации, но для этого требовалось, чтобы администратор БД вручную предоставил пользователям разрешения.
Ключевое примечание) Я, как администратор базы данных, не хочу вручную предоставлять разрешения определенным пользователям. Работодатели и работники будут создавать свои собственные учетные записи, и в зависимости от того, являются ли они работодателем или работником (что должна делать схема аутентификации), должны отображаться соответствующие страницы. (Так что да, работник может лгать о том, что он является работодателем при создании учетной записи, но игнорировать это)
Еще одно примечание) Пожалуйста, не обращайте внимания на тот факт, что пароли хранятся в виде простого текста, это домашняя проблема, а шифрование еще не изучено.
function authenticate( p_username varchar2, p_password varchar2 ) return boolean is
begin
return(
Table1Authenticate( p_username, p_password )
or
Table2Authenticate( p_username, p_password )
);
end;
create or replace function Table1Authenticate( p_username varchar2, p_password varchar2 ) return boolean is
i integer;
begin
select
1 into i
from employer
where upper(employer.username) = upper(p_username)
and upper(employer.passwords) = upper(p_password);
return( true );
exception when NO_DATA_FOUND then
return( false );
end;
create or replace function Table2Authenticate( p_username varchar2, p_password varchar2 ) return boolean is
i integer;
begin
select
1 into i
from employee
where upper(employee.username) = upper(p_username)
and upper(employee.password) = upper(p_password);
return( true );
exception when NO_DATA_FOUND then
return( false );
end;