WIP: Road to 1.0.0 #1
14
README.md
14
README.md
|
@ -42,11 +42,13 @@ Many other features are currently planned for this app, such as:
|
||||||
# Technical overview
|
# Technical overview
|
||||||
|
|
||||||
Tech stack:
|
Tech stack:
|
||||||
- [Laravel 7](https://laravel.com/)
|
- [Laravel 8](https://laravel.com/)
|
||||||
- Eloquent ORM
|
- [Eloquent ORM](https://laravel.com/docs/5.0/eloquent)
|
||||||
- AdminLTE / Bootstrap 4
|
- [AdminLTE](https://adminlte.io/) /
|
||||||
- jQuery / Plain Javascript
|
- [Bootstrap 4](https://getbootstrap.com/docs/4.0/getting-started/introduction/)
|
||||||
- vueJS (in the future)
|
- [jQuery](https://jquery.com/)
|
||||||
|
- [Bootstrap 4](https://getbootstrap.com/)
|
||||||
|
- [Icons by FontAwesome](https://fontawesome.com/)
|
||||||
|
|
||||||
# Stability
|
# Stability
|
||||||
|
|
||||||
|
@ -63,7 +65,7 @@ Tech stack:
|
||||||
# Software Requirements
|
# Software Requirements
|
||||||
- ``composer`` (min version: 1.8.4)
|
- ``composer`` (min version: 1.8.4)
|
||||||
- ``npm`` (tested w/ v 5.8.0)
|
- ``npm`` (tested w/ v 5.8.0)
|
||||||
- ``php`` (required PHP 7 or newer - lower versions unsupported!)
|
- ``php`` (required PHP 8 or newer - lower versions unsupported!)
|
||||||
|
|
||||||
# PHP Extension Requirements
|
# PHP Extension Requirements
|
||||||
|
|
||||||
|
|
|
@ -16,13 +16,15 @@
|
||||||
"fideloper/proxy": "^4.2",
|
"fideloper/proxy": "^4.2",
|
||||||
"fruitcake/laravel-cors": "^1.0",
|
"fruitcake/laravel-cors": "^1.0",
|
||||||
"geo-sot/laravel-env-editor": "^0.9.9",
|
"geo-sot/laravel-env-editor": "^0.9.9",
|
||||||
|
"graham-campbell/markdown": "^13.1",
|
||||||
|
"guzzlehttp/guzzle": "^7.0.1",
|
||||||
"jeroennoten/laravel-adminlte": "^3.2",
|
"jeroennoten/laravel-adminlte": "^3.2",
|
||||||
"laravel/framework": "^8.0",
|
"laravel/framework": "^8.0",
|
||||||
"laravel/slack-notification-channel": "^2.0",
|
"laravel/slack-notification-channel": "^2.0",
|
||||||
"laravel/tinker": "^2.0",
|
"laravel/tinker": "^2.0",
|
||||||
"laravel/ui": "^3.0",
|
"laravel/ui": "^3.0",
|
||||||
"mcamara/laravel-localization": "^1.5",
|
"mcamara/laravel-localization": "^1.5",
|
||||||
"mpociot/teamwork": "^6.0",
|
"mpociot/teamwork": "^6.1",
|
||||||
"pragmarx/google2fa-laravel": "^1.3",
|
"pragmarx/google2fa-laravel": "^1.3",
|
||||||
"sentry/sentry-laravel": "2.9.0",
|
"sentry/sentry-laravel": "2.9.0",
|
||||||
"spatie/laravel-permission": "^3.13"
|
"spatie/laravel-permission": "^3.13"
|
||||||
|
@ -51,7 +53,6 @@
|
||||||
"Database\\Factories\\": "database/factories/",
|
"Database\\Factories\\": "database/factories/",
|
||||||
"Database\\Seeders\\": "database/seeders/"
|
"Database\\Seeders\\": "database/seeders/"
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
"autoload-dev": {
|
"autoload-dev": {
|
||||||
"psr-4": {
|
"psr-4": {
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||||
"This file is @generated automatically"
|
"This file is @generated automatically"
|
||||||
],
|
],
|
||||||
"content-hash": "c89391bfd2557bb2adbf7f31deda6b2d",
|
"content-hash": "39f6633d9207dd645f0d1935ee11c483",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "almasaeed2010/adminlte",
|
"name": "almasaeed2010/adminlte",
|
||||||
|
@ -1934,16 +1934,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/framework",
|
"name": "laravel/framework",
|
||||||
"version": "v8.63.0",
|
"version": "v8.64.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/laravel/framework.git",
|
"url": "https://github.com/laravel/framework.git",
|
||||||
"reference": "8f3d280f36a427730c8c8fa34316c79eed38781e"
|
"reference": "3337c029e1bb31d9712d27437cc27010ba302c9e"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/laravel/framework/zipball/8f3d280f36a427730c8c8fa34316c79eed38781e",
|
"url": "https://api.github.com/repos/laravel/framework/zipball/3337c029e1bb31d9712d27437cc27010ba302c9e",
|
||||||
"reference": "8f3d280f36a427730c8c8fa34316c79eed38781e",
|
"reference": "3337c029e1bb31d9712d27437cc27010ba302c9e",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
@ -2101,7 +2101,7 @@
|
||||||
"issues": "https://github.com/laravel/framework/issues",
|
"issues": "https://github.com/laravel/framework/issues",
|
||||||
"source": "https://github.com/laravel/framework"
|
"source": "https://github.com/laravel/framework"
|
||||||
},
|
},
|
||||||
"time": "2021-10-05T14:04:25+00:00"
|
"time": "2021-10-12T13:43:13+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "laravel/serializable-closure",
|
"name": "laravel/serializable-closure",
|
||||||
|
@ -2775,6 +2775,68 @@
|
||||||
],
|
],
|
||||||
"time": "2021-10-01T21:08:31+00:00"
|
"time": "2021-10-01T21:08:31+00:00"
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "mpociot/teamwork",
|
||||||
|
"version": "6.1.2",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/mpociot/teamwork.git",
|
||||||
|
"reference": "f306f97b424d382c129c0cc025229085f4a946fe"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/mpociot/teamwork/zipball/f306f97b424d382c129c0cc025229085f4a946fe",
|
||||||
|
"reference": "f306f97b424d382c129c0cc025229085f4a946fe",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"laravel/framework": "^6.0|^7.0|^8.0",
|
||||||
|
"php": "^7.2.5|^8.0"
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"doctrine/dbal": "^2.10",
|
||||||
|
"illuminate/database": "^6.0|^7.0|^8.0",
|
||||||
|
"mockery/mockery": "^1.3.3",
|
||||||
|
"orchestra/testbench": "^4.0|^5.0|^6.0"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"laravel": {
|
||||||
|
"providers": [
|
||||||
|
"Mpociot\\Teamwork\\TeamworkServiceProvider"
|
||||||
|
],
|
||||||
|
"aliases": {
|
||||||
|
"Teamwork": "Mpociot\\Teamwork\\Facades\\Teamwork"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"Mpociot\\Teamwork\\": "src"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Marcel Pociot",
|
||||||
|
"email": "m.pociot@gmail.com"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "User to Team associations for the Laravel 5 Framework",
|
||||||
|
"homepage": "http://github.com/mpociot/teamwork",
|
||||||
|
"keywords": [
|
||||||
|
"Invite",
|
||||||
|
"Teams"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"issues": "https://github.com/mpociot/teamwork/issues",
|
||||||
|
"source": "https://github.com/mpociot/teamwork"
|
||||||
|
},
|
||||||
|
"time": "2021-02-16T10:12:41+00:00"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "nesbot/carbon",
|
"name": "nesbot/carbon",
|
||||||
"version": "2.53.1",
|
"version": "2.53.1",
|
||||||
|
@ -10345,5 +10407,5 @@
|
||||||
"ext-json": "*"
|
"ext-json": "*"
|
||||||
},
|
},
|
||||||
"platform-dev": [],
|
"platform-dev": [],
|
||||||
"plugin-api-version": "2.1.0"
|
"plugin-api-version": "2.0.0"
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,5 +36,6 @@ class DatabaseSeeder extends Seeder
|
||||||
$this->call(\Database\Seeders\UserSeeder::class);
|
$this->call(\Database\Seeders\UserSeeder::class);
|
||||||
$this->call(\Database\Seeders\DefaultOptionsSeeder::class);
|
$this->call(\Database\Seeders\DefaultOptionsSeeder::class);
|
||||||
$this->call(\Database\Seeders\NewPermissions::class);
|
$this->call(\Database\Seeders\NewPermissions::class);
|
||||||
|
$this->call(\Database\Seeders\TeamSeeder::class);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,25 @@
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright © 2020 Miguel Nogueira
|
||||||
|
*
|
||||||
|
* This file is part of Raspberry Staff Manager.
|
||||||
|
*
|
||||||
|
* Raspberry Staff Manager 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, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Raspberry Staff Manager 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 Raspberry Staff Manager. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
namespace Database\Seeders;
|
namespace Database\Seeders;
|
||||||
|
|
||||||
use App\Facades\Options;
|
use App\Facades\Options;
|
||||||
|
@ -13,16 +34,27 @@ class DefaultOptionsSeeder extends Seeder
|
||||||
*/
|
*/
|
||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
Options::setOption('notify_new_application_email', true, 'Notify when a new application comes through'); // done
|
Options::setOption('notify_new_application_email', true, 'Notify when a new application comes through', 'notifications'); // done
|
||||||
Options::setOption('notify_application_comment', false, 'Notify when someone comments on an application'); // done
|
Options::setOption('notify_application_comment', false, 'Notify when someone comments on an application', 'notifications'); // done
|
||||||
Options::setOption('notify_new_user', true, 'Notify when someone signs up'); // done
|
Options::setOption('notify_new_user', true, 'Notify when someone signs up', 'notifications'); // done
|
||||||
Options::setOption('notify_application_status_change', true, 'Notify when an application changes status'); // done
|
Options::setOption('notify_application_status_change', true, 'Notify when an application changes status', 'notifications'); // done
|
||||||
Options::setOption('notify_applicant_approved', true, 'Notify when an applicant is approved'); // done
|
Options::setOption('notify_applicant_approved', true, 'Notify when an applicant is approved', 'notifications'); // done
|
||||||
Options::setOption('notify_vacancystatus_change', false, 'Notify when a vacancy\'s status changes'); // done
|
Options::setOption('notify_vacancystatus_change', false, 'Notify when a vacancy\'s status changes', 'notifications'); // done
|
||||||
|
|
||||||
|
|
||||||
Options::setOption('enable_slack_notifications', true, 'Enable slack notifications');
|
// added in 0.6.2
|
||||||
Options::setOption('enable_email_notifications', true, 'Enable e-mail notifications');
|
Options::setOption('pw_security_policy', 'low', 'Describes the current password security policy.', 'app_security');
|
||||||
|
Options::setOption('graceperiod', 7, '2FA Grace Period', 'app_security');
|
||||||
|
Options::setOption('password_expiry', '0', 'Defines wether passwords must be reset after $value', 'app_security');
|
||||||
|
Options::setOption('force2fa', false, 'Defines whether 2fa is forced upon users', 'app_security');
|
||||||
|
Options::setOption('force2faRole', 'reviewer', 'Defines which role to force 2fa for', 'app_security');
|
||||||
|
Options::setOption('requireGameLicense', true, 'Defines whether people need to validate their game license', 'app_security');
|
||||||
|
|
||||||
|
Options::setOption('currentGame', 'MINECRAFT', 'Defines what game we\'re working with', 'app_integration');
|
||||||
|
|
||||||
|
|
||||||
|
Options::setOption('enable_slack_notifications', true, 'Enable slack notifications', 'notifications');
|
||||||
|
Options::setOption('enable_email_notifications', true, 'Enable e-mail notifications', 'notifications');
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,23 @@
|
||||||
<?php
|
<?php
|
||||||
|
/*
|
||||||
|
* Copyright © 2020 Miguel Nogueira
|
||||||
|
*
|
||||||
|
* This file is part of Raspberry Staff Manager.
|
||||||
|
*
|
||||||
|
* Raspberry Staff Manager 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, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Raspberry Staff Manager 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 Raspberry Staff Manager. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
namespace Database\Seeders;
|
namespace Database\Seeders;
|
||||||
|
|
||||||
use Illuminate\Database\Seeder;
|
use Illuminate\Database\Seeder;
|
||||||
|
|
|
@ -1,4 +1,23 @@
|
||||||
<?php
|
<?php
|
||||||
|
/*
|
||||||
|
* Copyright © 2020 Miguel Nogueira
|
||||||
|
*
|
||||||
|
* This file is part of Raspberry Staff Manager.
|
||||||
|
*
|
||||||
|
* Raspberry Staff Manager 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, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Raspberry Staff Manager 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 Raspberry Staff Manager. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
namespace Database\Seeders;
|
namespace Database\Seeders;
|
||||||
|
|
||||||
use Illuminate\Database\Seeder;
|
use Illuminate\Database\Seeder;
|
||||||
|
@ -41,35 +60,40 @@ class PermissionSeeder extends Seeder
|
||||||
|
|
||||||
// Spatie wildcard permissions (same concept of MC permissions)
|
// Spatie wildcard permissions (same concept of MC permissions)
|
||||||
|
|
||||||
Permission::create(['name' => 'applications.submit']);
|
$permissions = [
|
||||||
Permission::create(['name' => 'applications.stages.deny']);
|
'applications.submit',
|
||||||
Permission::create(['name' => 'applications.stages.approve']);
|
'applications.stages.deny',
|
||||||
Permission::create(['name' => 'applications.view.all']);
|
'applications.stages.approve',
|
||||||
Permission::create(['name' => 'applications.view.own']);
|
'applications.view.all',
|
||||||
Permission::create(['name' => 'applications.vote']);
|
'applications.view.own',
|
||||||
Permission::create(['name' => 'appointments.schedule']);
|
'applications.vote',
|
||||||
Permission::create(['name' => 'appointments.schedule.edit']);
|
'appointments.schedule',
|
||||||
Permission::create(['name' => 'appointments.schedule.cancel']);
|
'appointments.schedule.edit',
|
||||||
Permission::create(['name' => 'applications.*']);
|
'appointments.schedule.cancel',
|
||||||
Permission::create(['name' => 'appointments.*']);
|
'applications.*',
|
||||||
|
'appointments.*',
|
||||||
|
|
||||||
Permission::create(['name' => 'profiles.view.others']);
|
'profiles.view.others',
|
||||||
Permission::create(['name' => 'profiles.edit.others']);
|
'profiles.edit.others',
|
||||||
|
|
||||||
Permission::create(['name' => 'admin.userlist']);
|
'admin.userlist',
|
||||||
Permission::create(['name' => 'admin.stafflist']);
|
'admin.stafflist',
|
||||||
Permission::create(['name' => 'admin.hiring.forms']);
|
'admin.hiring.forms',
|
||||||
Permission::create(['name' => 'admin.hiring.formbuilder']);
|
'admin.hiring.formbuilder',
|
||||||
Permission::create(['name' => 'admin.hiring.vacancy']);
|
'admin.hiring.vacancy',
|
||||||
Permission::create(['name' => 'admin.hiring.vacancy.edit,delete']);
|
'admin.hiring.vacancy.edit,delete',
|
||||||
Permission::create(['name' => 'admin.notificationsettings']);
|
'admin.notificationsettings',
|
||||||
Permission::create(['name' => 'admin.notificationsettings.edit']);
|
'admin.notificationsettings.edit',
|
||||||
Permission::create(['name' => 'admin.hiring.*']);
|
'admin.hiring.*',
|
||||||
Permission::create(['name' => 'admin.notificationsettings.*']);
|
'admin.notificationsettings.*',
|
||||||
Permission::create(['name' => 'admin.maintenance.logs.view']);
|
'admin.maintenance.logs.view',
|
||||||
|
'admin.developertools.use',
|
||||||
|
];
|
||||||
|
|
||||||
|
foreach ($permissions as $permission)
|
||||||
Permission::create(['name' => 'admin.developertools.use']);
|
{
|
||||||
|
Permission::create(['name' => $permission]);
|
||||||
|
}
|
||||||
|
|
||||||
$user->givePermissionTo([
|
$user->givePermissionTo([
|
||||||
'applications.submit',
|
'applications.submit',
|
||||||
|
|
|
@ -1,4 +1,23 @@
|
||||||
<?php
|
<?php
|
||||||
|
/*
|
||||||
|
* Copyright © 2020 Miguel Nogueira
|
||||||
|
*
|
||||||
|
* This file is part of Raspberry Staff Manager.
|
||||||
|
*
|
||||||
|
* Raspberry Staff Manager 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, either version 3 of the License, or
|
||||||
|
* (at your option) any later version.
|
||||||
|
*
|
||||||
|
* Raspberry Staff Manager 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 Raspberry Staff Manager. If not, see <https://www.gnu.org/licenses/>.
|
||||||
|
*/
|
||||||
|
|
||||||
namespace Database\Seeders;
|
namespace Database\Seeders;
|
||||||
|
|
||||||
use App\Profile;
|
use App\Profile;
|
||||||
|
@ -15,6 +34,17 @@ class UserSeeder extends Seeder
|
||||||
*/
|
*/
|
||||||
public function run()
|
public function run()
|
||||||
{
|
{
|
||||||
|
|
||||||
|
$ghostAccount = User::create([
|
||||||
|
'uuid' => 'b741345057274a519144881927be0290', // Ghost
|
||||||
|
'name' => 'Ghost (deleted account)',
|
||||||
|
'email' => 'blackhole@example.com',
|
||||||
|
'email_verified_at' => now(),
|
||||||
|
'username' => 'ghost',
|
||||||
|
'originalIP' => '0.0.0.0',
|
||||||
|
'password' => 'locked'
|
||||||
|
])->assignRole('user'); // There can't be role-less users
|
||||||
|
|
||||||
$staffUsers = [
|
$staffUsers = [
|
||||||
|
|
||||||
[
|
[
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="description" content="{{ config('app.name') }} Staff Member Management Tool">
|
<meta name="description" content="{{ config('app.name') }} Staff Member Management Tool">
|
||||||
<meta name="author" content="Miguel Nogueira">
|
<meta name="author" content="Miguel N.">
|
||||||
<meta name="tags" content="minecraft, minecraft server staff, minecraft staff, minecraft servers">
|
<meta name="tags" content="minecraft, minecraft server staff, minecraft staff, minecraft servers">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue