85 lines
3.8 KiB
Plaintext
85 lines
3.8 KiB
Plaintext
модуль пользователи
|
||
|
||
импорт "стд::вывод"
|
||
импорт "исх/строка"
|
||
импорт "исх/спринтф"
|
||
импорт "исх/массивы"
|
||
импорт "исх/сеть/хттп"
|
||
импорт "исх/форматы/джесон"
|
||
импорт "исх/сеть/хттп/маршрутизатор"
|
||
импорт "исх/картотека"
|
||
импорт "исх/картотека/репозитории"
|
||
импорт "исх/бюрократия"
|
||
|
||
фн войти*(путь: Строка, параметры: массивы.Строки, обращение: маршрутизатор.Обращение): хттп.ХттпОтвет {
|
||
пусть картотека = картотека.зайти()
|
||
пусть оплошность := ""
|
||
пусть данные = джесон.парсить(обращение.туловище, оплошность)
|
||
|
||
если оплошность # "" {
|
||
вернуть хттп.ответ_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"], сменить пароль)
|
||
|
||
вернуть маршрутизатор
|
||
}
|