описал интерфейсную часть аутентификации, пока оставил без реализации
This commit is contained in:
5
src/auth/jwt.cpp
Normal file
5
src/auth/jwt.cpp
Normal file
@@ -0,0 +1,5 @@
|
||||
//
|
||||
// Created by vlad on 04.11.2024.
|
||||
//
|
||||
|
||||
#include "jwt.h"
|
23
src/auth/jwt.h
Normal file
23
src/auth/jwt.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#ifndef JWT_H
|
||||
#define JWT_H
|
||||
#include <string>
|
||||
#include "resources.h"
|
||||
|
||||
namespace http::auth::jwt {
|
||||
class Jwt {
|
||||
public:
|
||||
static Jwt fromCookies(const std::string& cookie);
|
||||
static Jwt fromString(const std::string& cookie);
|
||||
static Jwt fromUser(const std::string& User);
|
||||
|
||||
bool isValid();
|
||||
|
||||
std::string getUsername();
|
||||
|
||||
std::string asCookie();
|
||||
|
||||
~Jwt();
|
||||
};
|
||||
}
|
||||
|
||||
#endif //JWT_H
|
@@ -4,25 +4,74 @@
|
||||
|
||||
namespace http::auth {
|
||||
/**
|
||||
* Класс пользовательских разрешений,
|
||||
*/
|
||||
class UserPremision{};
|
||||
* Класс пользователя, содержит логин/хеш_пароля/настройки пользователя/права.
|
||||
* Хеш пароля представляется в виде строки
|
||||
*/
|
||||
class User {
|
||||
private:
|
||||
uint32_t perms;
|
||||
|
||||
/**
|
||||
* Класс пользователя, содержит логин/хеш_пароля/настройки пользователя/права
|
||||
*/
|
||||
class User{};
|
||||
public:
|
||||
const std::string username;
|
||||
std::string passwordHash;
|
||||
|
||||
/**
|
||||
* Класс аутентификации. Управляет всеми сессиями, создает новые при логине, удаляет при логауте.
|
||||
* @note Класс устанавливает заголовок 'Set-Cookie' в ответе, и этот заголовок должен дойти до пользователя!
|
||||
*/
|
||||
class AuthProvider {
|
||||
User(const std::string& username, const std::string& passwordHash);
|
||||
|
||||
/**
|
||||
* Проверить пароль на соответствие хешу
|
||||
* @param pass
|
||||
* @return
|
||||
*/
|
||||
bool checkPassword(const std::string& pass);
|
||||
|
||||
/**
|
||||
* Установка пароля
|
||||
* @param pass строка с исходным паролем
|
||||
*/
|
||||
void setPassword(const std::string& pass);
|
||||
|
||||
|
||||
static constexpr uint32_t SUPERUSER = 0x0001;
|
||||
static constexpr uint32_t WATCH_STATISTICS = 0x0002; // мониторинг модема
|
||||
static constexpr uint32_t RESET_PACKET_STATISTICS = 0x0004; // сброс статистики пакетов
|
||||
static constexpr uint32_t WATCH_SETTINGS = 0x0008; // просмотр настроек , если недоступно, то вкладки с настройками не будет
|
||||
static constexpr uint32_t EDIT_SETTINGS = 0x0010; // редактирование настроек, установка параметров модулятора/демодулятора/dma/cinc
|
||||
static constexpr uint32_t UPDATE_FIRMWARE = 0x0020; // обновление прошивки
|
||||
|
||||
/**
|
||||
* Проверить, что у пользователя есть нужное право. Если это суперпользователь, то у него по умолчанию все права есть.
|
||||
* @param p набор прав, из констант данного класса.
|
||||
* @return
|
||||
*/
|
||||
bool checkPremisions(uint32_t p);
|
||||
|
||||
void setPremisions(uint32_t p);
|
||||
void resetPremisions(uint32_t p);
|
||||
|
||||
~User();
|
||||
};
|
||||
|
||||
class NeedAuentificationResource: public resource::BasicResource {};
|
||||
/**
|
||||
* Класс аутентификации. Управляет всеми сессиями, создает новые при логине, удаляет при логауте.
|
||||
* @note Класс устанавливает заголовок 'Set-Cookie' в ответе, и этот заголовок должен дойти до пользователя!
|
||||
*/
|
||||
class AuthProvider {
|
||||
public:
|
||||
AuthProvider();
|
||||
|
||||
/**
|
||||
* Авторизовать пользователя.
|
||||
*
|
||||
* @param rep
|
||||
* @return true, в случае успешной авторизации
|
||||
*/
|
||||
bool doAuth(const std::string& username, const std::string& password, server::Reply& rep);
|
||||
|
||||
~AuthProvider();
|
||||
};
|
||||
|
||||
class NeedAuentificationResource : public resource::BasicResource {
|
||||
};
|
||||
}
|
||||
|
||||
#endif //RESOURCES_H
|
||||
|
Reference in New Issue
Block a user