chore: auto-generate protobuf files [skip ci]
This commit is contained in:
177
gen/ldap.ts
177
gen/ldap.ts
@@ -10,6 +10,48 @@ import { Observable } from "rxjs";
|
||||
|
||||
export const protobufPackage = "ldap_service";
|
||||
|
||||
/**
|
||||
* ==========================================
|
||||
* БАЗОВЫЕ И ПЕРЕИСПОЛЬЗУЕМЫЕ СТРУКТУРЫ
|
||||
* ==========================================
|
||||
*/
|
||||
export interface EmptyRequest {
|
||||
}
|
||||
|
||||
/** Стандартный ответ для мутаций (создание, обновление, удаление) */
|
||||
export interface StatusResponse {
|
||||
success: boolean;
|
||||
errorMessage: string;
|
||||
}
|
||||
|
||||
/** Полная модель пользователя */
|
||||
export interface UserData {
|
||||
/** Полный путь в AD (Distinguished Name) */
|
||||
dn: string;
|
||||
/** Логин (sAMAccountName) */
|
||||
username: string;
|
||||
/** ФИО (displayName) */
|
||||
displayName: string;
|
||||
/** Почта (mail) */
|
||||
email: string;
|
||||
/** Описание/Должность (description) */
|
||||
description: string;
|
||||
/** Аватарка в байтах (thumbnailPhoto) */
|
||||
avatar: Uint8Array;
|
||||
/** Список групп */
|
||||
groups: string[];
|
||||
/** Статус аккаунта */
|
||||
isActive: boolean;
|
||||
}
|
||||
|
||||
/** Модель группы */
|
||||
export interface GroupData {
|
||||
dn: string;
|
||||
/** Короткое имя группы (cn) */
|
||||
name: string;
|
||||
}
|
||||
|
||||
/** --- Авторизация --- */
|
||||
export interface VerifyRequest {
|
||||
username: string;
|
||||
password: string;
|
||||
@@ -18,29 +60,152 @@ export interface VerifyRequest {
|
||||
export interface VerifyResponse {
|
||||
success: boolean;
|
||||
errorMessage: string;
|
||||
/** Отдаем полные данные при успешном входе */
|
||||
user: UserData | undefined;
|
||||
}
|
||||
|
||||
export interface UserData {
|
||||
dn: string;
|
||||
displayName: string;
|
||||
groups: string[];
|
||||
isActive: boolean;
|
||||
/** --- Списки --- */
|
||||
export interface UserListResponse {
|
||||
success: boolean;
|
||||
errorMessage: string;
|
||||
users: UserData[];
|
||||
}
|
||||
|
||||
export interface GroupListResponse {
|
||||
success: boolean;
|
||||
errorMessage: string;
|
||||
groups: GroupData[];
|
||||
}
|
||||
|
||||
/** --- Управление профилем --- */
|
||||
export interface CreateUserRequest {
|
||||
username: string;
|
||||
fullName: string;
|
||||
password: string;
|
||||
/** Сразу при создании можно задать почту */
|
||||
email?: string | undefined;
|
||||
}
|
||||
|
||||
/** Запрос на обновление. Используем optional для частичного обновления. */
|
||||
export interface UpdateUserRequest {
|
||||
/** Обязательное поле: кого обновляем */
|
||||
username: string;
|
||||
/** Новое ФИО (повлечет Rename CN) */
|
||||
displayName?:
|
||||
| string
|
||||
| undefined;
|
||||
/** Новая почта */
|
||||
email?:
|
||||
| string
|
||||
| undefined;
|
||||
/** Новое описание */
|
||||
description?:
|
||||
| string
|
||||
| undefined;
|
||||
/** Новая аватарка (бинарник картинки) */
|
||||
avatar?: Uint8Array | undefined;
|
||||
}
|
||||
|
||||
export interface ChangePasswordRequest {
|
||||
username: string;
|
||||
newPassword: string;
|
||||
}
|
||||
|
||||
export interface ToggleStatusRequest {
|
||||
username: string;
|
||||
/** true - включить (512), false - отключить (514) */
|
||||
setActive: boolean;
|
||||
}
|
||||
|
||||
/** --- Управление членством в группах --- */
|
||||
export interface GroupMemberRequest {
|
||||
/** Логин пользователя */
|
||||
username: string;
|
||||
/** Полный путь группы (в которую добавляем / из которой удаляем) */
|
||||
groupDn: string;
|
||||
}
|
||||
|
||||
export const LDAP_SERVICE_PACKAGE_NAME = "ldap_service";
|
||||
|
||||
/**
|
||||
* ==========================================
|
||||
* ГЛАВНЫЙ СЕРВИС
|
||||
* ==========================================
|
||||
*/
|
||||
|
||||
export interface LdapAuthClient {
|
||||
/** --- Вектор 1: Авторизация (Bind от имени пользователя) --- */
|
||||
|
||||
verifyUser(request: VerifyRequest): Observable<VerifyResponse>;
|
||||
|
||||
/** --- Вектор 2: Управление Пользователями (Bind системного аккаунта) --- */
|
||||
|
||||
getUsers(request: EmptyRequest): Observable<UserListResponse>;
|
||||
|
||||
createUser(request: CreateUserRequest): Observable<StatusResponse>;
|
||||
|
||||
updateUser(request: UpdateUserRequest): Observable<StatusResponse>;
|
||||
|
||||
changePassword(request: ChangePasswordRequest): Observable<StatusResponse>;
|
||||
|
||||
toggleUserStatus(request: ToggleStatusRequest): Observable<StatusResponse>;
|
||||
|
||||
/** --- Вектор 3: Управление Группами --- */
|
||||
|
||||
getGroups(request: EmptyRequest): Observable<GroupListResponse>;
|
||||
|
||||
addUserToGroup(request: GroupMemberRequest): Observable<StatusResponse>;
|
||||
|
||||
removeUserFromGroup(request: GroupMemberRequest): Observable<StatusResponse>;
|
||||
}
|
||||
|
||||
/**
|
||||
* ==========================================
|
||||
* ГЛАВНЫЙ СЕРВИС
|
||||
* ==========================================
|
||||
*/
|
||||
|
||||
export interface LdapAuthController {
|
||||
/** --- Вектор 1: Авторизация (Bind от имени пользователя) --- */
|
||||
|
||||
verifyUser(request: VerifyRequest): Promise<VerifyResponse> | Observable<VerifyResponse> | VerifyResponse;
|
||||
|
||||
/** --- Вектор 2: Управление Пользователями (Bind системного аккаунта) --- */
|
||||
|
||||
getUsers(request: EmptyRequest): Promise<UserListResponse> | Observable<UserListResponse> | UserListResponse;
|
||||
|
||||
createUser(request: CreateUserRequest): Promise<StatusResponse> | Observable<StatusResponse> | StatusResponse;
|
||||
|
||||
updateUser(request: UpdateUserRequest): Promise<StatusResponse> | Observable<StatusResponse> | StatusResponse;
|
||||
|
||||
changePassword(request: ChangePasswordRequest): Promise<StatusResponse> | Observable<StatusResponse> | StatusResponse;
|
||||
|
||||
toggleUserStatus(request: ToggleStatusRequest): Promise<StatusResponse> | Observable<StatusResponse> | StatusResponse;
|
||||
|
||||
/** --- Вектор 3: Управление Группами --- */
|
||||
|
||||
getGroups(request: EmptyRequest): Promise<GroupListResponse> | Observable<GroupListResponse> | GroupListResponse;
|
||||
|
||||
addUserToGroup(request: GroupMemberRequest): Promise<StatusResponse> | Observable<StatusResponse> | StatusResponse;
|
||||
|
||||
removeUserFromGroup(
|
||||
request: GroupMemberRequest,
|
||||
): Promise<StatusResponse> | Observable<StatusResponse> | StatusResponse;
|
||||
}
|
||||
|
||||
export function LdapAuthControllerMethods() {
|
||||
return function (constructor: Function) {
|
||||
const grpcMethods: string[] = ["verifyUser"];
|
||||
const grpcMethods: string[] = [
|
||||
"verifyUser",
|
||||
"getUsers",
|
||||
"createUser",
|
||||
"updateUser",
|
||||
"changePassword",
|
||||
"toggleUserStatus",
|
||||
"getGroups",
|
||||
"addUserToGroup",
|
||||
"removeUserFromGroup",
|
||||
];
|
||||
for (const method of grpcMethods) {
|
||||
const descriptor: any = Reflect.getOwnPropertyDescriptor(constructor.prototype, method);
|
||||
GrpcMethod("LdapAuth", method)(constructor.prototype[method], method, descriptor);
|
||||
|
||||
Reference in New Issue
Block a user