Anton Tarasenko
2 years ago
2 changed files with 99 additions and 0 deletions
@ -0,0 +1,25 @@ |
|||||||
|
; In this config you can add several different user groups by adding |
||||||
|
; `[<group_name> UserGroup]` section for rach group. Every user can belong to |
||||||
|
; several different groups. |
||||||
|
; `priority` describes how important the group is. For example, if a user |
||||||
|
; belongs to two different groups and both groups have different access rights |
||||||
|
; for a certain command - the one with the highest priority will be chosen by |
||||||
|
; default. |
||||||
|
; You can specify several `user` entries with players stead id to add user to |
||||||
|
; the certain group. |
||||||
|
|
||||||
|
[admin UserGroup] |
||||||
|
priority=400 |
||||||
|
;user= |
||||||
|
|
||||||
|
[moderator UserGroup] |
||||||
|
priority=200 |
||||||
|
;user= |
||||||
|
|
||||||
|
[trusted UserGroup] |
||||||
|
priority=100 |
||||||
|
;user= |
||||||
|
|
||||||
|
[wanted UserGroup] |
||||||
|
priority=0 |
||||||
|
;user= |
@ -0,0 +1,74 @@ |
|||||||
|
/** |
||||||
|
* Acedia's class for defining user group in config files. |
||||||
|
* Copyright 2022 Anton Tarasenko |
||||||
|
*------------------------------------------------------------------------------ |
||||||
|
* This file is part of Acedia. |
||||||
|
* |
||||||
|
* Acedia is free software: you can redistribute it and/or modify |
||||||
|
* it under the terms of the GNU General Public License as published by |
||||||
|
* the Free Software Foundation, version 3 of the License, or |
||||||
|
* (at your option) any later version. |
||||||
|
* |
||||||
|
* Acedia is distributed in the hope that it will be useful, |
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
* GNU General Public License for more details. |
||||||
|
* |
||||||
|
* You should have received a copy of the GNU General Public License |
||||||
|
* along with Acedia. If not, see <https://www.gnu.org/licenses/>. |
||||||
|
*/ |
||||||
|
class UserGroup extends AcediaConfig |
||||||
|
perobjectconfig |
||||||
|
config(AcediaUserGroups); |
||||||
|
|
||||||
|
var public config int priority; |
||||||
|
var public config array<string> user; |
||||||
|
|
||||||
|
protected function HashTable ToData() |
||||||
|
{ |
||||||
|
local int i; |
||||||
|
local HashTable data; |
||||||
|
local ArrayList wrappedUserArray; |
||||||
|
|
||||||
|
data = __().collections.EmptyHashTable(); |
||||||
|
data.SetInt(P("priority"), priority); |
||||||
|
wrappedUserArray = __().collections.EmptyArrayList(); |
||||||
|
for (i = 0; i < user.length; i += 1) { |
||||||
|
wrappedUserArray.AddString(user[i]); |
||||||
|
} |
||||||
|
data.SetItem(P("user"), wrappedUserArray); |
||||||
|
wrappedUserArray.FreeSelf(); |
||||||
|
return data; |
||||||
|
} |
||||||
|
|
||||||
|
protected function FromData(HashTable source) |
||||||
|
{ |
||||||
|
local int i; |
||||||
|
local ArrayList wrappedUserArray; |
||||||
|
|
||||||
|
DefaultIt(); |
||||||
|
if (source == none) { |
||||||
|
return; |
||||||
|
} |
||||||
|
priority = source.GetInt(P("priority"), 0); |
||||||
|
wrappedUserArray = source.GetArrayList(P("user")); |
||||||
|
if (wrappedUserArray == none) { |
||||||
|
return; |
||||||
|
} |
||||||
|
for (i = 0; i < wrappedUserArray.GetLength(); i += 1) { |
||||||
|
user[user.length] = wrappedUserArray.GetString(i); |
||||||
|
} |
||||||
|
wrappedUserArray.FreeSelf(); |
||||||
|
} |
||||||
|
|
||||||
|
protected function DefaultIt() |
||||||
|
{ |
||||||
|
priority = 0; |
||||||
|
user.length = 0; |
||||||
|
} |
||||||
|
|
||||||
|
defaultproperties |
||||||
|
{ |
||||||
|
configName = "AcediaUserGroups" |
||||||
|
supportsDataConversion = true |
||||||
|
} |
Loading…
Reference in new issue