]> git.stg.codes - stg.git/blobdiff - include/stg/users.h
Add missing library link.
[stg.git] / include / stg / users.h
index 80ee8478710d0a020f1dc3798ed78efee31d2c6f..dfc60b64dcb5fb107c2af0c5abd8a311c1e6113b 100644 (file)
  *    Author : Maxim Mamontov <faust@stargazer.dp.ua>
  */
 
-#ifndef USERS_H
-#define USERS_H
+#pragma once
+
+#include "notifer.h"
 
 #include <string>
 
-#include "notifer.h"
-#include "user.h"
+namespace STG
+{
+
+struct Admin;
+struct User;
+struct Auth;
+
+struct Users {
+    virtual ~Users() = default;
 
-class ADMIN;
+    using UserPtr = User*;
+    using ConstUserPtr = const User*;
 
-class USERS {
-public:
-    virtual int  FindByName(const std::string & login, USER_PTR * user) = 0;
+    virtual int  FindByName(const std::string& login, UserPtr* user) = 0;
+    virtual int  FindByName(const std::string& login, ConstUserPtr* user) const = 0;
+    virtual bool Exists(const std::string& login) const = 0;
 
-    virtual bool TariffInUse(const std::string & tariffName) const = 0;
+    virtual bool TariffInUse(const std::string& tariffName) const = 0;
 
-    virtual void AddNotifierUserAdd(NOTIFIER_BASE<USER_PTR> * notifier) = 0;
-    virtual void DelNotifierUserAdd(NOTIFIER_BASE<USER_PTR> * notifier) = 0;
+    virtual void AddNotifierUserAdd(NotifierBase<User*>* notifier) = 0;
+    virtual void DelNotifierUserAdd(NotifierBase<User*>* notifier) = 0;
 
-    virtual void AddNotifierUserDel(NOTIFIER_BASE<USER_PTR> * notifier) = 0;
-    virtual void DelNotifierUserDel(NOTIFIER_BASE<USER_PTR> * notifier) = 0;
+    virtual void AddNotifierUserDel(NotifierBase<User*>* notifier) = 0;
+    virtual void DelNotifierUserDel(NotifierBase<User*>* notifier) = 0;
 
-    virtual int  Add(const std::string & login, const ADMIN * admin) = 0;
-    virtual void Del(const std::string & login, const ADMIN * admin) = 0;
+    virtual int  Add(const std::string& login, const Admin* admin) = 0;
+    virtual void Del(const std::string& login, const Admin* admin) = 0;
 
-    virtual bool Authorize(const std::string & login, uint32_t ip,
-                           uint32_t enabledDirs, const AUTH * auth) = 0;
-    virtual bool Unauthorize(const std::string & login, const AUTH * auth) = 0;
+    virtual bool Authorize(const std::string& login, uint32_t ip,
+                           uint32_t enabledDirs, const Auth* auth) = 0;
+    virtual bool Unauthorize(const std::string& login,
+                             const Auth* auth,
+                             const std::string& reason = {}) = 0;
 
     virtual int  ReadUsers() = 0;
     virtual size_t Count() const = 0;
 
-    virtual int  FindByIPIdx(uint32_t ip, USER_PTR * user) const = 0;
+    virtual int  FindByIPIdx(uint32_t ip, User** user) const = 0;
     virtual bool IsIPInIndex(uint32_t ip) const = 0;
+    virtual bool IsIPInUse(uint32_t ip, const std::string & login, const User** user) const = 0;
 
-    virtual int  OpenSearch() = 0;
-    virtual int  SearchNext(int handle, USER_PTR * u) = 0;
+    virtual unsigned int  OpenSearch() = 0;
+    virtual int  SearchNext(int handle, User** u) = 0;
     virtual int  CloseSearch(int handle) = 0;
 
     virtual int  Start() = 0;
     virtual int  Stop() = 0;
 };
 
-#endif
+}