]> git.stg.codes - stg.git/blob - stargazer/admin_impl.h
34431b0172e3065fca9b2f253e121f3e71919b51
[stg.git] / stargazer / admin_impl.h
1 /*
2  *    This program is free software; you can redistribute it and/or modify
3  *    it under the terms of the GNU General Public License as published by
4  *    the Free Software Foundation; either version 2 of the License, or
5  *    (at your option) any later version.
6  *
7  *    This program is distributed in the hope that it will be useful,
8  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
9  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10  *    GNU General Public License for more details.
11  *
12  *    You should have received a copy of the GNU General Public License
13  *    along with this program; if not, write to the Free Software
14  *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
15  */
16
17 /*
18  *    Date: 27.10.2002
19  */
20
21 /*
22  *    Author : Boris Mikhailenko <stg34@stargazer.dp.ua>
23  */
24
25 #pragma once
26
27 #include "stg/admin.h"
28 #include "stg/admin_conf.h"
29
30 #include <string>
31 #include <cstdint>
32
33 namespace STG
34 {
35
36 class AdminImpl : public Admin {
37     public:
38           AdminImpl() noexcept : ip(0) {}
39
40           explicit AdminImpl(const AdminConf& ac) noexcept : conf(ac), ip(0) {}
41           AdminImpl(const Priv& priv,
42                      const std::string& login,
43                      const std::string& password) noexcept
44               : conf(priv, login, password), ip(0)
45           {}
46
47           AdminImpl(const AdminImpl&) = default;
48           AdminImpl& operator=(const AdminImpl&) = default;
49           AdminImpl(AdminImpl&&) = default;
50           AdminImpl& operator=(AdminImpl&&) = default;
51
52           AdminImpl& operator=(const AdminConf& ac) noexcept { conf = ac; return *this; }
53           bool       operator==(const AdminImpl& rhs) const noexcept { return conf.login == rhs.conf.login; }
54           bool       operator!=(const AdminImpl& rhs) const noexcept { return !(*this == rhs); }
55           bool       operator<(const AdminImpl& rhs) const noexcept { return conf.login < rhs.conf.login; }
56           //bool       operator<=(const AdminImpl & rhs) const;
57
58           const std::string& GetPassword() const override { return conf.password; }
59           const std::string& GetLogin() const override { return conf.login; }
60           const Priv*        GetPriv() const override { return &conf.priv; }
61           uint32_t           GetPrivAsInt() const override { return conf.priv.toInt(); }
62           const AdminConf&   GetConf() const override { return conf; }
63           void               Print() const;
64           uint32_t           GetIP() const override { return ip; }
65           std::string        GetIPStr() const override;
66           void               SetIP(uint32_t v) override { ip = v; }
67           const std::string  GetLogStr() const override;
68
69     private:
70           AdminConf conf;
71           uint32_t  ip;
72 };
73
74 }