@quenty/permissionprovider 9.0.0-canary.331.7eefa75.0 → 9.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,7 +3,157 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
- # [9.0.0-canary.331.7eefa75.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.7.0...@quenty/permissionprovider@9.0.0-canary.331.7eefa75.0) (2023-02-27)
6
+ # [9.0.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.21.0...@quenty/permissionprovider@9.0.0) (2023-10-11)
7
+
8
+ **Note:** Version bump only for package @quenty/permissionprovider
9
+
10
+
11
+
12
+
13
+
14
+ # [8.21.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.20.0...@quenty/permissionprovider@8.21.0) (2023-09-21)
15
+
16
+ **Note:** Version bump only for package @quenty/permissionprovider
17
+
18
+
19
+
20
+
21
+
22
+ # [8.20.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.19.0...@quenty/permissionprovider@8.20.0) (2023-09-04)
23
+
24
+ **Note:** Version bump only for package @quenty/permissionprovider
25
+
26
+
27
+
28
+
29
+
30
+ # [8.19.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.18.0...@quenty/permissionprovider@8.19.0) (2023-08-23)
31
+
32
+
33
+ ### Features
34
+
35
+ * Add PermissionService:PromiseIsPermissionLevel(player, permissionLevel) ([2297438](https://github.com/Quenty/NevermoreEngine/commit/229743882002800c917e5fd131f81b4f7a36dc89))
36
+
37
+
38
+
39
+
40
+
41
+ # [8.18.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.17.1...@quenty/permissionprovider@8.18.0) (2023-07-28)
42
+
43
+ **Note:** Version bump only for package @quenty/permissionprovider
44
+
45
+
46
+
47
+
48
+
49
+ ## [8.17.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.17.0...@quenty/permissionprovider@8.17.1) (2023-07-18)
50
+
51
+ **Note:** Version bump only for package @quenty/permissionprovider
52
+
53
+
54
+
55
+
56
+
57
+ # [8.17.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.16.1...@quenty/permissionprovider@8.17.0) (2023-07-15)
58
+
59
+ **Note:** Version bump only for package @quenty/permissionprovider
60
+
61
+
62
+
63
+
64
+
65
+ ## [8.16.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.16.0...@quenty/permissionprovider@8.16.1) (2023-07-11)
66
+
67
+ **Note:** Version bump only for package @quenty/permissionprovider
68
+
69
+
70
+
71
+
72
+
73
+ # [8.16.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.15.1...@quenty/permissionprovider@8.16.0) (2023-07-10)
74
+
75
+ **Note:** Version bump only for package @quenty/permissionprovider
76
+
77
+
78
+
79
+
80
+
81
+ ## [8.15.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.15.0...@quenty/permissionprovider@8.15.1) (2023-07-03)
82
+
83
+ **Note:** Version bump only for package @quenty/permissionprovider
84
+
85
+
86
+
87
+
88
+
89
+ # [8.15.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.14.0...@quenty/permissionprovider@8.15.0) (2023-06-24)
90
+
91
+ **Note:** Version bump only for package @quenty/permissionprovider
92
+
93
+
94
+
95
+
96
+
97
+ # [8.14.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.13.0...@quenty/permissionprovider@8.14.0) (2023-06-17)
98
+
99
+ **Note:** Version bump only for package @quenty/permissionprovider
100
+
101
+
102
+
103
+
104
+
105
+ # [8.13.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.12.0...@quenty/permissionprovider@8.13.0) (2023-05-26)
106
+
107
+ **Note:** Version bump only for package @quenty/permissionprovider
108
+
109
+
110
+
111
+
112
+
113
+ # [8.12.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.11.0...@quenty/permissionprovider@8.12.0) (2023-04-24)
114
+
115
+
116
+ ### Features
117
+
118
+ * Add PromiseIsCreator and PromiseIsAdmin utility helper methods on PermissionService ([179ed15](https://github.com/Quenty/NevermoreEngine/commit/179ed153a3c6329417569cfff93310a0e862bc1d))
119
+
120
+
121
+
122
+
123
+
124
+ # [8.11.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.10.1...@quenty/permissionprovider@8.11.0) (2023-04-10)
125
+
126
+ **Note:** Version bump only for package @quenty/permissionprovider
127
+
128
+
129
+
130
+
131
+
132
+ ## [8.10.1](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.10.0...@quenty/permissionprovider@8.10.1) (2023-04-07)
133
+
134
+ **Note:** Version bump only for package @quenty/permissionprovider
135
+
136
+
137
+
138
+
139
+
140
+ # [8.10.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.9.0...@quenty/permissionprovider@8.10.0) (2023-03-31)
141
+
142
+ **Note:** Version bump only for package @quenty/permissionprovider
143
+
144
+
145
+
146
+
147
+
148
+ # [8.9.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.8.0...@quenty/permissionprovider@8.9.0) (2023-03-05)
149
+
150
+ **Note:** Version bump only for package @quenty/permissionprovider
151
+
152
+
153
+
154
+
155
+
156
+ # [8.8.0](https://github.com/Quenty/NevermoreEngine/compare/@quenty/permissionprovider@8.7.0...@quenty/permissionprovider@8.8.0) (2023-02-27)
7
157
 
8
158
  **Note:** Version bump only for package @quenty/permissionprovider
9
159
 
package/LICENSE.md CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2014-2022 Quenty
3
+ Copyright (c) 2014-2023 James Onnen (Quenty)
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@quenty/permissionprovider",
3
- "version": "9.0.0-canary.331.7eefa75.0",
3
+ "version": "9.0.0",
4
4
  "description": "Permission provider for Roblox, including authenticating against group membership",
5
5
  "keywords": [
6
6
  "Roblox",
@@ -25,17 +25,20 @@
25
25
  "Quenty"
26
26
  ],
27
27
  "dependencies": {
28
- "@quenty/baseobject": "6.1.0",
29
- "@quenty/grouputils": "7.0.0-canary.331.7eefa75.0",
30
- "@quenty/loader": "6.1.0",
31
- "@quenty/maid": "2.4.0",
32
- "@quenty/promise": "7.0.0-canary.331.7eefa75.0",
33
- "@quenty/remoting": "7.0.0-canary.331.7eefa75.0",
34
- "@quenty/servicebag": "6.5.0",
35
- "@quenty/table": "3.2.0"
28
+ "@quenty/baseobject": "^7.0.0",
29
+ "@quenty/brio": "^9.0.0",
30
+ "@quenty/grouputils": "^7.0.0",
31
+ "@quenty/loader": "^7.0.0",
32
+ "@quenty/maid": "^2.6.0",
33
+ "@quenty/playerutils": "^3.0.0",
34
+ "@quenty/promise": "^7.0.0",
35
+ "@quenty/remoting": "^7.0.0",
36
+ "@quenty/rx": "^8.0.0",
37
+ "@quenty/servicebag": "^7.0.0",
38
+ "@quenty/table": "^3.3.0"
36
39
  },
37
40
  "publishConfig": {
38
41
  "access": "public"
39
42
  },
40
- "gitHead": "7eefa756f8bd892b1210349a8133d6d56992dffb"
43
+ "gitHead": "fdeae46099587019ec5fc15317dc673aed379400"
41
44
  }
@@ -23,7 +23,22 @@ PermissionServiceClient.ServiceName = "PermissionServiceClient"
23
23
  @param _serviceBag ServiceBag
24
24
  ]=]
25
25
  function PermissionServiceClient:Init(_serviceBag)
26
- self._provider = PermissionProviderClient.new(PermissionProviderConstants.DEFAULT_REMOTE_FUNCTION_NAME)
26
+ self._providerPromise = Promise.resolved(PermissionProviderClient.new(PermissionProviderConstants.DEFAULT_REMOTE_FUNCTION_NAME))
27
+ end
28
+
29
+ --[=[
30
+ Returns whether the player is an admin.
31
+
32
+ @param player Player | nil
33
+ @return Promise<boolean>
34
+ ]=]
35
+ function PermissionServiceClient:PromiseIsAdmin(player)
36
+ assert((typeof(player) == "Instance" and player:IsA("Player")) or player == nil, "Bad player")
37
+
38
+ return self:PromisePermissionProvider()
39
+ :Then(function(permissionProvider)
40
+ return permissionProvider:PromiseIsAdmin(player)
41
+ end)
27
42
  end
28
43
 
29
44
  --[=[
@@ -31,7 +46,7 @@ end
31
46
  @return Promise<PermissionProviderClient>
32
47
  ]=]
33
48
  function PermissionServiceClient:PromisePermissionProvider()
34
- return Promise.resolved(self._provider)
49
+ return self._providerPromise
35
50
  end
36
51
 
37
52
  return PermissionServiceClient
@@ -7,6 +7,8 @@
7
7
 
8
8
  local require = require(script.Parent.loader).load(script)
9
9
 
10
+ local Players = game:GetService("Players")
11
+
10
12
  local PermissionProviderConstants = require("PermissionProviderConstants")
11
13
  local Promise = require("Promise")
12
14
  local PromiseGetRemoteFunction = require("PromiseGetRemoteFunction")
@@ -25,9 +27,16 @@ end
25
27
 
26
28
  --[=[
27
29
  Returns whether the local player is an admin.
30
+
31
+ @param player Player | nil
28
32
  @return Promise<boolean>
29
33
  ]=]
30
- function PermissionProviderClient:PromiseIsAdmin()
34
+ function PermissionProviderClient:PromiseIsAdmin(player)
35
+ player = player or Players.LocalPlayer
36
+ assert(typeof(player) == "Instance" and player:IsA("Player"), "Bad player")
37
+
38
+ assert(player == Players.LocalPlayer, "We only support local player for now")
39
+
31
40
  if self._cachedAdminPromise then
32
41
  return self._cachedAdminPromise
33
42
  end
@@ -26,10 +26,15 @@ local require = require(script.Parent.loader).load(script)
26
26
 
27
27
  local CreatorPermissionProvider = require("CreatorPermissionProvider")
28
28
  local GroupPermissionProvider = require("GroupPermissionProvider")
29
+ local Maid = require("Maid")
30
+ local PermissionLevel = require("PermissionLevel")
29
31
  local PermissionProviderConstants = require("PermissionProviderConstants")
30
32
  local PermissionProviderUtils = require("PermissionProviderUtils")
31
33
  local Promise = require("Promise")
32
- local Maid = require("Maid")
34
+ local Rx = require("Rx")
35
+ local RxBrioUtils = require("RxBrioUtils")
36
+ local RxPlayerUtils = require("RxPlayerUtils")
37
+ local PermissionLevelUtils = require("PermissionLevelUtils")
33
38
 
34
39
  local PermissionService = {}
35
40
  PermissionService.ServiceName = "PermissionService"
@@ -92,6 +97,69 @@ function PermissionService:PromisePermissionProvider()
92
97
  return self._promise
93
98
  end
94
99
 
100
+ --[=[
101
+ Returns whether the player is an admin.
102
+ @param player Player
103
+ @return Promise<boolean>
104
+ ]=]
105
+ function PermissionService:PromiseIsAdmin(player)
106
+ assert(typeof(player) == "Instance" and player:IsA("Player"), "bad player")
107
+
108
+ return self:PromiseIsPermissionLevel(player, PermissionLevel.ADMIN)
109
+ end
110
+
111
+ --[=[
112
+ Returns whether the player is a creator.
113
+ @param player Player
114
+ @return Promise<boolean>
115
+ ]=]
116
+ function PermissionService:PromiseIsCreator(player)
117
+ assert(typeof(player) == "Instance" and player:IsA("Player"), "bad player")
118
+
119
+ return self:PromiseIsPermissionLevel(player, PermissionLevel.CREATOR)
120
+ end
121
+
122
+ --[=[
123
+ Returns whether the player is a creator.
124
+ @param player Player
125
+ @param permissionLevel PermissionLevel
126
+ @return Promise<boolean>
127
+ ]=]
128
+ function PermissionService:PromiseIsPermissionLevel(player, permissionLevel)
129
+ assert(typeof(player) == "Instance" and player:IsA("Player"), "bad player")
130
+ assert(PermissionLevelUtils.isPermissionLevel(permissionLevel), "Bad permissionLevel")
131
+
132
+ return self:PromisePermissionProvider()
133
+ :Then(function(permissionProvider)
134
+ return permissionProvider:PromiseIsPermissionLevel(player, permissionLevel)
135
+ end)
136
+ end
137
+
138
+ --[=[
139
+ Observe all creators in the game
140
+
141
+ @param permissionLevel PermissionLevel
142
+ @return Observable<Brio<Player>>
143
+ ]=]
144
+ function PermissionService:ObservePermissionedPlayersBrio(permissionLevel)
145
+ assert(PermissionLevelUtils.isPermissionLevel(permissionLevel), "Bad permissionLevel")
146
+
147
+ return RxPlayerUtils.observePlayersBrio():Pipe({
148
+ RxBrioUtils.flatMapBrio(function(player)
149
+ return Rx.fromPromise(self:PromiseIsPermissionLevel(player, permissionLevel))
150
+ :Pipe({
151
+ Rx.switchMap(function(hasPermission)
152
+ if hasPermission then
153
+ return Rx.of(player)
154
+ else
155
+ return Rx.EMPTY
156
+ end
157
+ end)
158
+ })
159
+ end);
160
+ })
161
+ end
162
+
95
163
  function PermissionService:Destroy()
96
164
  self._maid:DoCleaning()
97
165
  self._provider = nil
@@ -8,6 +8,8 @@ local require = require(script.Parent.loader).load(script)
8
8
 
9
9
  local BaseObject = require("BaseObject")
10
10
  local GetRemoteFunction = require("GetRemoteFunction")
11
+ local PermissionLevel = require("PermissionLevel")
12
+ local PermissionLevelUtils = require("PermissionLevelUtils")
11
13
  local Table = require("Table")
12
14
 
13
15
  local BasePermissionProvider = setmetatable({}, BaseObject)
@@ -44,14 +46,51 @@ end
44
46
  --[=[
45
47
  Returns whether the player is a creator.
46
48
  @param player Player
49
+ @param permissionLevel PermissionLevel
47
50
  @return Promise<boolean>
48
51
  ]=]
49
- function BasePermissionProvider:PromiseIsCreator(player)
52
+ function BasePermissionProvider:PromiseIsPermissionLevel(player, permissionLevel)
50
53
  assert(typeof(player) == "Instance" and player:IsA("Player"), "Bad player")
54
+ assert(PermissionLevelUtils.isPermissionLevel(permissionLevel), "Bad permissionLevel")
51
55
 
52
56
  error("Not implemented")
53
57
  end
54
58
 
59
+ --[=[
60
+ Returns whether the player is a creator.
61
+ @param player Player
62
+ @param permissionLevel PermissionLevel
63
+ @return Promise<boolean>
64
+ ]=]
65
+ function BasePermissionProvider:IsPermissionLevel(player, permissionLevel)
66
+ assert(typeof(player) == "Instance" and player:IsA("Player"), "Bad player")
67
+ assert(PermissionLevelUtils.isPermissionLevel(permissionLevel), "Bad permissionLevel")
68
+
69
+ local promise = self:PromiseIsPermissionLevel(player, permissionLevel)
70
+ if promise:IsPending() then
71
+ return false -- We won't yield for this
72
+ end
73
+
74
+ local ok, result = promise:Yield()
75
+ if not ok then
76
+ warn("[BasePermissionProvider] - %s"):format(tostring(result))
77
+ return false
78
+ end
79
+
80
+ return result
81
+ end
82
+
83
+ --[=[
84
+ Returns whether the player is a creator.
85
+ @param player Player
86
+ @return Promise<boolean>
87
+ ]=]
88
+ function BasePermissionProvider:PromiseIsCreator(player)
89
+ assert(typeof(player) == "Instance" and player:IsA("Player"), "Bad player")
90
+
91
+ return self:PromiseIsPermissionLevel(player, PermissionLevel.CREATOR)
92
+ end
93
+
55
94
  --[=[
56
95
  Returns whether the player is an admin.
57
96
  @param player Player
@@ -60,7 +99,7 @@ end
60
99
  function BasePermissionProvider:PromiseIsAdmin(player)
61
100
  assert(typeof(player) == "Instance" and player:IsA("Player"), "Bad player")
62
101
 
63
- error("Not implemented")
102
+ return self:PromiseIsPermissionLevel(player, PermissionLevel.ADMIN)
64
103
  end
65
104
 
66
105
  --[=[
@@ -76,18 +115,7 @@ end
76
115
  function BasePermissionProvider:IsCreator(player)
77
116
  assert(typeof(player) == "Instance" and player:IsA("Player"), "Bad player")
78
117
 
79
- local promise = self:PromiseIsCreator(player)
80
- if promise:IsPending() then
81
- return false -- We won't yield for this
82
- end
83
-
84
- local ok, result = promise:Yield()
85
- if not ok then
86
- warn("[BasePermissionProvider] - %s"):format(tostring(result))
87
- return false
88
- end
89
-
90
- return result
118
+ return self:IsCreator(player, PermissionLevel.CREATOR)
91
119
  end
92
120
 
93
121
  --[=[
@@ -103,18 +131,7 @@ end
103
131
  function BasePermissionProvider:IsAdmin(player)
104
132
  assert(typeof(player) == "Instance" and player:IsA("Player"), "Bad player")
105
133
 
106
- local promise = self:PromiseIsAdmin(player)
107
- if promise:IsPending() then
108
- return false -- We won't yield for this
109
- end
110
-
111
- local ok, result = promise:Yield()
112
- if not ok then
113
- warn("[BasePermissionProvider] - %s"):format(tostring(result))
114
- return false
115
- end
116
-
117
- return result
134
+ return self:IsPermissionLevel(player, PermissionLevel.ADMIN)
118
135
  end
119
136
 
120
137
  function BasePermissionProvider:_onServerInvoke(player)
@@ -12,6 +12,8 @@ local RunService = game:GetService("RunService")
12
12
  local BasePermissionProvider = require("BasePermissionProvider")
13
13
  local PermissionProviderConstants = require("PermissionProviderConstants")
14
14
  local Promise = require("Promise")
15
+ local PermissionLevel = require("PermissionLevel")
16
+ local PermissionLevelUtils = require("PermissionLevelUtils")
15
17
 
16
18
  local CreatorPermissionProvider = setmetatable({}, BasePermissionProvider)
17
19
  CreatorPermissionProvider.ClassName = "CreatorPermissionProvider"
@@ -31,23 +33,22 @@ function CreatorPermissionProvider.new(config)
31
33
  end
32
34
 
33
35
  --[=[
34
- Returns whether the player is a creator.
35
- @param player Player
36
- @return Promise<boolean>
37
- ]=]
38
- function CreatorPermissionProvider:PromiseIsCreator(player)
39
- return Promise.resolved(player.UserId == self._userId
40
- or RunService:IsStudio())
41
- end
36
+ Returns whether the player is at a specific permission level.
42
37
 
43
- --[=[
44
- Returns whether the player is an admin.
45
38
  @param player Player
39
+ @param permissionLevel PermissionLevel
46
40
  @return Promise<boolean>
47
41
  ]=]
48
- function CreatorPermissionProvider:PromiseIsAdmin(player)
49
- return Promise.resolved(player.UserId == self._userId
50
- or RunService:IsStudio())
42
+ function CreatorPermissionProvider:PromiseIsPermissionLevel(player, permissionLevel)
43
+ assert(typeof(player) == "Instance" and player:IsA("Player"), "Bad player")
44
+ assert(PermissionLevelUtils.isPermissionLevel(permissionLevel), "Bad permissionLevel")
45
+
46
+ if permissionLevel == PermissionLevel.ADMIN
47
+ or permissionLevel == PermissionLevel.CREATOR then
48
+ return Promise.resolved(player.UserId == self._userId or RunService:IsStudio())
49
+ else
50
+ error("Unknown permissionLevel")
51
+ end
51
52
  end
52
53
 
53
54
  return CreatorPermissionProvider
@@ -9,10 +9,12 @@ local require = require(script.Parent.loader).load(script)
9
9
 
10
10
  local Players = game:GetService("Players")
11
11
 
12
- local PermissionProviderConstants = require("PermissionProviderConstants")
13
- local Promise = require("Promise")
14
12
  local BasePermissionProvider = require("BasePermissionProvider")
15
13
  local GroupUtils = require("GroupUtils")
14
+ local PermissionLevel = require("PermissionLevel")
15
+ local PermissionLevelUtils = require("PermissionLevelUtils")
16
+ local PermissionProviderConstants = require("PermissionProviderConstants")
17
+ local Promise = require("Promise")
16
18
 
17
19
  local GroupPermissionProvider = setmetatable({}, BasePermissionProvider)
18
20
  GroupPermissionProvider.__index = GroupPermissionProvider
@@ -68,11 +70,26 @@ function GroupPermissionProvider:Start()
68
70
  end
69
71
 
70
72
  --[=[
71
- Returns whether the player is a creator.
73
+ Returns whether the player is at a specific permission level
74
+
72
75
  @param player Player
76
+ @param permissionLevel PermissionLevel
73
77
  @return Promise<boolean>
74
78
  ]=]
75
- function GroupPermissionProvider:PromiseIsCreator(player)
79
+ function GroupPermissionProvider:PromiseIsPermissionLevel(player, permissionLevel)
80
+ assert(typeof(player) == "Instance" and player:IsA("Player"), "Bad player")
81
+ assert(PermissionLevelUtils.isPermissionLevel(permissionLevel), "Bad permissionLevel")
82
+
83
+ if permissionLevel == PermissionLevel.ADMIN then
84
+ return self:_promiseIsAdmin(player)
85
+ elseif permissionLevel == PermissionLevel.CREATOR then
86
+ return self:_promiseIsCreator(player)
87
+ else
88
+ error("Unknown permissionLevel")
89
+ end
90
+ end
91
+
92
+ function GroupPermissionProvider:_promiseIsCreator(player)
76
93
  assert(typeof(player) == "Instance" and player:IsA("Player"), "Bad player")
77
94
  assert(player:IsDescendantOf(game), "Bad player")
78
95
 
@@ -86,12 +103,7 @@ function GroupPermissionProvider:PromiseIsCreator(player)
86
103
  end)
87
104
  end
88
105
 
89
- --[=[
90
- Returns whether the player is an admin.
91
- @param player Player
92
- @return Promise<boolean>
93
- ]=]
94
- function GroupPermissionProvider:PromiseIsAdmin(player)
106
+ function GroupPermissionProvider:_promiseIsAdmin(player)
95
107
  assert(player:IsDescendantOf(game))
96
108
 
97
109
  -- really not saving much time.
@@ -0,0 +1,12 @@
1
+ --[=[
2
+ @class PermissionLevel
3
+ ]=]
4
+
5
+ local require = require(script.Parent.loader).load(script)
6
+
7
+ local Table = require("Table")
8
+
9
+ return Table.readonly({
10
+ ADMIN = "admin";
11
+ CREATOR = "creator";
12
+ })
@@ -0,0 +1,20 @@
1
+ --[=[
2
+ @class PermissionLevelUtils
3
+ ]=]
4
+
5
+ local require = require(script.Parent.loader).load(script)
6
+
7
+ local PermissionLevel = require("PermissionLevel")
8
+
9
+ local PermissionLevelUtils = {}
10
+
11
+ local ALLOWED = {}
12
+ for _, item in pairs(PermissionLevel) do
13
+ ALLOWED[item] = true
14
+ end
15
+
16
+ function PermissionLevelUtils.isPermissionLevel(permissionLevel)
17
+ return ALLOWED[permissionLevel]
18
+ end
19
+
20
+ return PermissionLevelUtils