Files
srab/исх/властелины/пользователи/пользователи.tri
2025-11-26 21:32:41 +03:00

85 lines
3.8 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.
модуль пользователи
импорт "стд::вывод"
импорт "исх/строка"
импорт "исх/спринтф"
импорт "исх/массивы"
импорт "исх/сеть/хттп"
импорт "исх/форматы/джесон"
импорт "исх/сеть/хттп/маршрутизатор"
импорт "исх/картотека"
импорт "исх/картотека/репозитории"
импорт "исх/бюрократия"
фн войти*(путь: Строка, параметры: массивы.Строки, обращение: маршрутизатор.Обращение): хттп.ХттпОтвет {
пусть картотека = картотека.зайти()
пусть оплошность := ""
пусть данные = джесон.парсить(обращение.туловище, оплошность)
если оплошность # "" {
вернуть хттп.ответ_500()
}
пусть имя пользователя := данные.получить("имя пользователя").строка()
пусть пароль := данные.получить("пароль").строка()
пусть пользователь = репозитории.авторизовать пользователя(имя пользователя^, пароль^, оплошность)
если оплошность # "" {
вывод.ф("$стр\n", оплошность)
вернуть хттп.ответ_500()
}
если пользователь = пусто {
вернуть хттп.ответ_401()
}
вернуть хттп.ХттпОтвет{
туловище: "Рады видеть вас снова :3"
}
}
фн сменить пароль*(путь: Строка, параметры: массивы.Строки, обращение: маршрутизатор.Обращение): хттп.ХттпОтвет {
пусть оплошность := ""
пусть картотека = картотека.зайти()
пусть пользователь = репозитории.авторизовать по паспорту(бюрократия.получить данные паспорта(обращение), оплошность)
если оплошность # "" {
вернуть хттп.ответ_500()
}
если пользователь = пусто {
вернуть хттп.ответ_401()
}
пусть данные = джесон.парсить(обращение.туловище, оплошность)
если оплошность # "" {
вернуть хттп.ответ_400()
}
пусть новый пароль := данные.получить("новый пароль").строка()
если новый пароль = пусто | новый пароль^ = "" {
вернуть хттп.ответ_422()
}
картотека.запросить безопасно(`
UPDATE users SET password = ? WHERE id = ?
`, оплошность, новый пароль^, пользователь^.идентификатор
)
если оплошность # "" {
вернуть хттп.ответ_500()
}
вернуть хттп.ответ_204()
}
фн добавить маршруты*(маршрутизатор: маршрутизатор.Маршрутизатор): маршрутизатор.Маршрутизатор {
маршрутизатор.добавить маршрут("/api/users/login", массивы.Строки["POST"], войти)
маршрутизатор.добавить маршрут("/api/users/password", массивы.Строки["PUT"], сменить пароль)
вернуть маршрутизатор
}