NeKernel dev
Loading...
Searching...
No Matches
UserMgr.h
Go to the documentation of this file.
1/* ========================================
2
3 Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
4
5======================================== */
6
7#ifndef INC_USER_H
8#define INC_USER_H
9
10/* ========================================
11
12 Revision History:
13
14 04/03/25: Set users directory as /libSystem/ instead of /usr/
15
16 ======================================== */
17
19#include <KernelKit/KPC.h>
20#include <NeKit/Config.h>
21#include <NeKit/KString.h>
22
25#define kMgmtUser "NEKERNEL/MGMT/%s"
26#define kGuestUser "NEKERNEL/GUEST/%s"
27#define kStdUser "NEKERNEL/STD/%s"
28
29#define kUsersDir "/users/"
30
31#define kMaxUserNameLen (256U)
32#define kMaxUserTokenLen (256U)
33
34namespace Kernel {
35class User;
36
44
47
49class User final {
50 public:
51 User() = delete;
52
53 User(const Int32& sel, const Char* username);
54 User(const UserRingKind& kind, const Char* username);
55
57
58 public:
60
61 public:
62 bool operator==(const User& lhs);
63 bool operator!=(const User& lhs);
64
65 public:
67 const UserRingKind& Ring();
68
70 Char* Name();
71
74
77
79 Bool Save(const UserPublicKey password);
80
83 Bool Login(const UserPublicKey password);
84
85 private:
89};
90
91inline User* kCurrentUser = nullptr;
92inline User* kRootUser = nullptr;
93} // namespace Kernel
94
95#endif /* ifndef INC_USER_H */
#define NE_COPY_DEFAULT(KLASS)
Definition Detail.h:17
Kernel Procedure Code.
#define kMaxUserNameLen
Definition UserMgr.h:31
System User class.
Definition UserMgr.h:49
UInt64 mUserFNV
Definition UserMgr.h:88
const UserRingKind & Ring()
Get software ring.
Definition UserMgr.cc:120
Bool Save(const UserPublicKey password)
Saves a password from the public key.
Definition UserMgr.cc:79
User()=delete
Bool Login(const UserPublicKey password)
Checks if a password matches the password.
Definition UserMgr.cc:89
~User()
User destructor class.
UserRingKind mUserRing
Definition UserMgr.h:86
Char * Name()
Get user name.
Definition UserMgr.cc:111
Bool IsStdUser()
Is he a standard user?
Definition UserMgr.cc:124
bool operator!=(const User &lhs)
Definition UserMgr.cc:103
bool operator==(const User &lhs)
Definition UserMgr.cc:99
Char mUserName[kMaxUserNameLen]
Definition UserMgr.h:87
Bool IsSuperUser()
Is she a super user?
Definition UserMgr.cc:128
UPS inline definitions.
Definition Device.h:12
char Char
Definition Config.h:51
User * kCurrentUser
Definition UserMgr.h:91
User * kRootUser
Definition UserMgr.h:92
Char UserPublicKeyType
Definition UserMgr.h:46
UserRingKind
Definition UserMgr.h:37
@ kRingInvalid
Definition UserMgr.h:38
@ kRingStdUser
Definition UserMgr.h:39
@ kRingSuperUser
Definition CoreProcessScheduler.h:226
@ kRingStdUser
Definition CoreProcessScheduler.h:225
@ kRingCount
Definition CoreProcessScheduler.h:228
@ kRingGuestUser
Definition CoreProcessScheduler.h:227
__INT32_TYPE__ Int32
Definition Config.h:38
Char * UserPublicKey
Definition UserMgr.h:45
__UINT64_TYPE__ UInt64
Definition Config.h:48
bool Bool
Definition Config.h:50