Element_Test_V2/Koncept/Testovoe/Основное/ПользователиКлиентИСервер.xbsl
Vladislav_k0ncept f16c003f46 Initial commit
2025-02-20 15:05:58 +00:00

128 lines
6.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@ВПроекте
@НаСервере
метод ПолныеПраваНаСправочникДляАутентифицированных(): РазрешениеДоступа
возврат новый РазрешениеДоступа(
[новый КлючДоступаДляАутентифицированных.Объект()],
[Сущность.Право.Создание, Сущность.Право.Чтение, Сущность.Право.Изменение, Сущность.Право.Удаление])
;
@ВПроекте
@НаСервере
метод ПолныеПраваНаСправочникДляРуководителя(): РазрешениеДоступа
возврат новый РазрешениеДоступа(
[новый КлючДоступаРуководителя.Объект()],
[Сущность.Право.Создание, Сущность.Право.Чтение, Сущность.Право.Изменение, Сущность.Право.Удаление])
;
@ВПроекте
@НаСервере
метод ПолныеПраваНаРегистрСведенийДляРуководителя(): РазрешениеДоступа
возврат новый РазрешениеДоступа(
[новый КлючДоступаРуководителя.Объект()],
[Сущность.Право.Чтение, Сущность.Право.Изменение])
;
@ВПроекте
@НаСервере @ДоступноСКлиента
метод ЭтоАдминистраторПриложения(): Булево
знч ТекущийПользователь = Пользователи.ТекущийПользователь
если ТекущийПользователь == Неопределено
возврат Ложь
;
знч Запрос = Запрос{
ВЫБРАТЬ
Администратор
ИЗ
Пользователи
ГДЕ
Ссылка == %ТекущийПользователь
}
возврат Запрос.Выполнить().Единственный().Администратор
;
@ВПроекте
@НаСервере @ДоступноСКлиента
метод ПолучитьТекущегоСотрудника(): Сотрудники.Ссылка?
знч ТекущийПользователь = Пользователи.ТекущийПользователь
если ТекущийПользователь == Неопределено
возврат Неопределено
;
знч Запрос = Запрос{
ВЫБРАТЬ ПЕРВЫЕ 1
Ссылка
ИЗ
Сотрудники
ГДЕ
Пользователь == %ТекущийПользователь
}
возврат Запрос.Выполнить().ЕдинственныйИлиУмолчание()?.Ссылка
;
@ВПроекте
@НаСервере @ДоступноСКлиента
метод ПолучитьДанныеТекущегоПользователя(): ДанныеПользователя
знч Запрос = Запрос{
ВЫБРАТЬ
Пользователи.Ссылка КАК Пользователь,
Пользователи.Администратор КАК ЭтоАдминистраторПриложения,
Сотрудники.Ссылка.ЗаменитьNull(Неопределено) КАК Сотрудник,
Сотрудники.Роль.ЗаменитьNull(Неопределено) КАК Роль,
Сотрудники.Регион.ЗаменитьNull(Неопределено) КАК Регион
ЗАПОЛНИТЬ ДанныеПользователя
ИЗ
Пользователи КАК Пользователи
ЛЕВОЕ СОЕДИНЕНИЕ Сотрудники КАК Сотрудники
ПО Пользователи.Ссылка == Сотрудники.Пользователь
ГДЕ
Пользователи.Ссылка == %{Пользователи.ТекущийПользователь}
УПОРЯДОЧИТЬ ПО
Пользователи.Ссылка
}
возврат Запрос.Выполнить().ЕдинственныйИлиУмолчание() ?? новый ДанныеПользователя()
;
@ВПодсистеме
@НаСервере
метод СоздатьПользователя(
Представление: Строка,
Логин: Строка,
ЗапретитьВход: Булево = Ложь): Пользователи.Ссылка
если Представление.Пусто()
выбросить новый ИсключениеНедопустимыйАргумент("Представление не может быть пустым")
;
если Логин.Пусто()
выбросить новый ИсключениеНедопустимыйАргумент("Логин не может быть пустым")
;
знч СписокПользователей = СпискиПользователей.ПолучитьСписокПоУмолчанию()
// Проверим, что пользователь с этим логином ещё не существует
знч МассивОписанийПользователей = СпискиПользователей.ПолучитьПользователей(СписокПользователей.Ид)
для Описание из МассивОписанийПользователей
если Описание.Логин == Логин
выбросить новый ИсключениеВыполнения("Пользователь с логином %Логин уже существует")
;
;
знч Описание = новый ОписаниеПользователя(СписокПользователей.Ид, Представление, Логин)
// Создаём пользователя
ПользователиСервиса.Создать(Описание)
// Подключение созданного пользователя к приложению
знч СсылкаНаПользователя = Пользователи.Подключить(Описание.Ид).Ссылка
// Запретим пользователю вход, если нужно
если ЗапретитьВход
Пользователи.ЗапретитьВход(СсылкаНаПользователя, Истина)
;
возврат СсылкаНаПользователя
;