28 #include <oc_stdlib.h> 34 #include <oc_system_cfg.h> 41 #define _________________________________________TYPES_SECTION______________________________________________________________________________ 46 oC_User_Permissions_t Permissions;
47 char Name[CFG_UINT8_MAX_LOGIN_LENGTH];
48 char Password[CFG_UINT8_MAX_PASSWORD_LENGTH];
51 #undef _________________________________________TYPES_SECTION______________________________________________________________________________ 58 #define _________________________________________FUNCTIONS_SECTION__________________________________________________________________________ 62 oC_User_t oC_User_New(
Allocator_t Allocator , AllocationFlags_t Flags ,
const char * Name ,
const char * Password , oC_User_Permissions_t Permissions )
68 user = kmalloc(
sizeof(
struct User_t) , Allocator , Flags);
73 user->Permissions = Permissions;
74 strncpy(user->Password , md5(Password) , CFG_UINT8_MAX_PASSWORD_LENGTH);
75 strncpy(user->Name , Name , CFG_UINT8_MAX_LOGIN_LENGTH);
88 if(isram(User) && oC_User_IsCorrect(*User))
90 (*User)->ObjectControl = 0;
92 if(kfree(*User,AllocationFlags_CanWaitForever))
111 const char * oC_User_GetName(
oC_User_t User )
113 const char * name =
"unknown";
115 if(oC_User_IsCorrect(User))
125 bool oC_User_Rename(
oC_User_t User ,
const char * NewName )
129 if(oC_User_IsCorrect(User) &&
130 !oC_User_IsRoot(User) &&
131 isaddresscorrect(NewName)&&
132 oC_User_CheckPermissions(getcuruser(), User->Permissions)
135 strncpy(User->Name, NewName, CFG_UINT8_MAX_LOGIN_LENGTH);
144 bool oC_User_CheckPassword(
oC_User_t User ,
const char * Password )
146 bool correct =
false;
148 if(oC_User_IsCorrect(User) && strcmp(md5(Password),User->Password) == 0)
158 bool oC_User_CheckPermissions(
oC_User_t User , oC_User_Permissions_t Permissions )
160 bool correct =
false;
162 if(oC_User_IsCorrect(User) &&
163 (Permissions & ~User->Permissions) == 0 )
173 oC_User_Permissions_t oC_User_GetPermissions(
oC_User_t User)
175 oC_User_Permissions_t permissions = 0;
177 if(oC_User_IsCorrect(User))
179 permissions = User->Permissions;
187 bool oC_User_ModifyPermissions(
oC_User_t User , oC_User_Permissions_t Permissions )
191 if(oC_User_IsCorrect(User) &&
192 0 != strcmp(User->Name,
"root") &&
193 oC_User_CheckPermissions(getcuruser(), Permissions) &&
194 !oC_User_IsRoot(User)
197 User->Permissions = Permissions;
208 return 0 == strcmp(oC_User_GetName(User),
"root");
211 #undef _________________________________________FUNCTIONS_SECTION__________________________________________________________________________
identifier for allocations
The file with helper macros for managing objects.
bool oC_MemMan_IsAddressCorrect(const void *Address)
checks if address is correct - in RAM or in FLASH
uint32_t oC_ObjectControl_t
stores object control value
The file with interface for user system.
static oC_ObjectControl_t oC_CountObjectControl(void *ObjectPointer, oC_ObjectId_t ObjectId)
counts object control for object
static bool oC_CheckObjectControl(void *ObjectPointer, oC_ObjectId_t ObjectId, oC_ObjectControl_t ObjectControl)
checks if object control is correct
The file with memory manager interface.
static const oC_Allocator_t Allocator
#define NULL
pointer to a zero