40 private $moduleInstance;
47 private $activityInstance;
70 private $controlGroup;
84 private $databaseUser;
92 public function createModuleEnvironment(
string $alias)
94 $this->
alias = $alias;
95 $this->setUpAuthentication();
97 $this->setUpDatabaseUser();
105 public function setActivity(
Activity $activity)
107 $this->activity = $activity;
117 $this->moduleInstance = $moduleInstance;
125 public function setModuleIsFor(
string $for)
137 $this->activityInstance = $activityInstance;
145 public function setControlUser(\
BristolSU\ControlDB\Contracts\Models\User $user)
147 $this->controlUser = $user;
155 public function setControlGroup(\
BristolSU\ControlDB\Contracts\Models\Group $group)
157 $this->controlGroup = $group;
165 public function setControlRole(\
BristolSU\ControlDB\Contracts\Models\Role $role)
167 $this->controlRole = $role;
175 public function setDatabaseUser(
DatabaseUser $databaseUser)
177 $this->databaseUser = $databaseUser;
185 public function getActivity():
Activity 187 return $this->activity;
195 public function getModuleIsFor():
string 207 return $this->moduleInstance;
217 return $this->activityInstance;
225 public function getControlUser(): \BristolSU\ControlDB\Contracts\Models\User
227 return $this->controlUser;
235 public function getControlGroup(): \BristolSU\ControlDB\Contracts\Models\Group
237 return $this->controlGroup;
245 public function getControlRole(): \BristolSU\ControlDB\Contracts\Models\Role
247 return $this->controlRole;
257 return $this->databaseUser;
267 private function setUpModule()
269 $this->activity = ($this->activity
270 ?? factory(Activity::class)->create([
271 'slug' => Str::random(5),
272 'activity_for' => ($this->
for??
'user')
275 $this->moduleInstance = ($this->moduleInstance
276 ?? factory(ModuleInstance::class)->create([
277 'slug' => Str::random(5),
278 'activity_id' => $this->activity->id,
279 'alias' => $this->alias
282 $this->activityInstance = ($this->activityInstance
283 ?? factory(ActivityInstance::class)->create([
284 'activity_id' => $this->activity->id,
285 'resource_id' => ($this->for ===
'role' ? $this->controlRole->id() : ($this->
for ===
'group' ? $this->controlGroup->id() : $this->controlUser->id())
287 'resource_type' => ($this->
for??
'user')
290 app()->instance(Activity::class, $this->activity);
291 app()->instance(ModuleInstance::class, $this->moduleInstance);
292 app()->make(ActivityInstanceResolver::class)->setActivityInstance($this->activityInstance);
293 app()->instance(ActivityInstance::class, $this->activityInstance);
307 private function setUpAuthentication()
309 if ($this->
for ===
'group') {
310 $this->controlGroup = ($this->controlGroup ?? $this->newGroup());
311 $this->beGroup($this->controlGroup);
313 if ($this->
for ===
'role') {
314 $this->controlRole = ($this->controlRole ?? $this->newRole());
315 $this->controlGroup = $this->controlRole->group();
316 $this->beRole($this->controlRole);
317 $this->beGroup($this->controlGroup);
320 $this->controlUser = ($this->controlUser ?? $this->newUser());
321 $this->beUser($this->controlUser);
327 private function setUpDatabaseUser()
329 $this->databaseUser = ($this->databaseUser ?? factory(DatabaseUser::class)->create([
330 'control_id' => ($this->controlUser ? $this->controlUser->id() : 1)
332 $this->be($this->databaseUser);
341 public function adminUrl($path =
'')
343 if (!Str::startsWith($path,
'/')) {
346 return '/a/'.$this->activity->slug.
'/'.$this->moduleInstance->slug.
'/'.$this->
alias.$path;
355 public function userUrl($path =
'')
357 if (!Str::startsWith($path,
'/')) {
360 return '/p/'.$this->activity->slug.
'/'.$this->moduleInstance->slug.
'/'.$this->
alias.$path;
369 public function adminApiUrl($path =
'')
371 if (!Str::startsWith($path,
'/')) {
374 return '/api/a/'.$this->activity->slug.
'/'.$this->moduleInstance->slug.
'/'.$this->
alias.$path;
383 public function userApiUrl($path =
'')
385 if (!Str::startsWith($path,
'/')) {
388 return '/api/p/'.$this->activity->slug.
'/'.$this->moduleInstance->slug.
'/'.$this->
alias.$path;