mirror of
https://github.com/NNTmux/newznab-tmux.git
synced 2026-08-29 01:08:56 +00:00
Update roles handling
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
2018-07-30 DariusIII
|
||||
* Chg: Update roles handling
|
||||
* Chg: Update User model, Utility and TmuxOutput classes and RegisterController
|
||||
* Chg: Update vlucas/phpdotenv and imdbphp/imdbphp to latest versions
|
||||
2018-07-27 DariusIII
|
||||
|
||||
@@ -6,6 +6,7 @@ use App\Models\User;
|
||||
use App\Models\Settings;
|
||||
use Illuminate\Console\Command;
|
||||
use App\Extensions\util\Versions;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Symfony\Component\Process\Process;
|
||||
|
||||
class InstallNntmux extends Command
|
||||
@@ -122,6 +123,8 @@ class InstallNntmux extends Command
|
||||
}
|
||||
}
|
||||
|
||||
$this->createRoles();
|
||||
|
||||
if (! $error && $this->addAdminUser()) {
|
||||
@file_put_contents(base_path().'/_install/install.lock', 'application install locked on '.now());
|
||||
$this->info('Generating application key');
|
||||
@@ -149,7 +152,7 @@ class InstallNntmux extends Command
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
protected function updatePatch(): bool
|
||||
private function updatePatch(): bool
|
||||
{
|
||||
$ver = new Versions();
|
||||
$patch = $ver->getSQLPatchFromFile();
|
||||
@@ -175,7 +178,7 @@ class InstallNntmux extends Command
|
||||
* @throws \Exception
|
||||
* @throws \RuntimeException
|
||||
*/
|
||||
protected function updatePaths()
|
||||
private function updatePaths()
|
||||
{
|
||||
$covers_path = base_path().'/resources/covers/';
|
||||
$nzb_path = base_path().'/resources/nzb/';
|
||||
@@ -217,10 +220,97 @@ class InstallNntmux extends Command
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private function createRoles()
|
||||
{
|
||||
Role::create(['name' =>'User']);
|
||||
Role::create(['name' =>'Admin']);
|
||||
Role::create(['name' =>'Disabled']);
|
||||
Role::create(['name' =>'Moderator']);
|
||||
Role::create(['name' =>'Friend']);
|
||||
|
||||
Role::query()
|
||||
->where('name', '=', 'User')
|
||||
->update(
|
||||
[
|
||||
'apirequests' => 10,
|
||||
'downloadrequests' => 10,
|
||||
'defaultinvites' => 1,
|
||||
'isdefault' => 1,
|
||||
'canpreview' => 1,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
]
|
||||
);
|
||||
|
||||
Role::query()
|
||||
->where('name', '=', 'Admin')
|
||||
->update(
|
||||
[
|
||||
'apirequests' => 1000,
|
||||
'downloadrequests' => 1000,
|
||||
'defaultinvites' => 1000,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 1,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
]
|
||||
);
|
||||
|
||||
Role::query()
|
||||
->where('name', '=', 'Disabled')
|
||||
->update(
|
||||
[
|
||||
'apirequests' => 0,
|
||||
'downloadrequests' => 0,
|
||||
'defaultinvites' => 0,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 0,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
]
|
||||
);
|
||||
|
||||
Role::query()
|
||||
->where('name', '=', 'Moderator')
|
||||
->update(
|
||||
[
|
||||
'apirequests' => 1000,
|
||||
'downloadrequests' => 1000,
|
||||
'defaultinvites' => 1000,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 1,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
]
|
||||
);
|
||||
|
||||
Role::query()
|
||||
->where('name', '=', 'Friend')
|
||||
->update(
|
||||
[
|
||||
'apirequests' => 100,
|
||||
'downloadrequests' => 100,
|
||||
'defaultinvites' => 5,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 1,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
protected function addAdminUser(): bool
|
||||
private function addAdminUser(): bool
|
||||
{
|
||||
if (env('ADMIN_USER') === '' || env('ADMIN_PASS') === '' || env('ADMIN_EMAIL') === '') {
|
||||
$this->error('Admin user data cannot be empty! Please edit .env file and fill in admin user details and run this script again!');
|
||||
@@ -231,6 +321,7 @@ class InstallNntmux extends Command
|
||||
try {
|
||||
User::add(env('ADMIN_USER'), env('ADMIN_PASS'), env('ADMIN_EMAIL'), 2, '', '', '', '');
|
||||
} catch (\Exception $e) {
|
||||
echo $e->getMessage();
|
||||
$this->error('Unable to add admin user!');
|
||||
|
||||
return false;
|
||||
|
||||
@@ -16,7 +16,7 @@ class IsAdmin
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if (Auth::user() && Auth::user()->user_roles_id === 2) {
|
||||
if (Auth::user() && Auth::user()->hasRole('Admin')) {
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
|
||||
+16
-15
@@ -8,6 +8,7 @@ use App\Mail\AccountExpired;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Mail;
|
||||
use Spatie\Permission\Models\Role;
|
||||
use Spatie\Permission\Traits\HasRoles;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
use Illuminate\Support\Facades\Password;
|
||||
@@ -158,7 +159,7 @@ class User extends Authenticatable
|
||||
*/
|
||||
public function role()
|
||||
{
|
||||
return $this->belongsTo(UserRole::class, 'user_roles_id');
|
||||
return $this->belongsTo(Role::class, 'user_roles_id');
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -268,7 +269,7 @@ class User extends Authenticatable
|
||||
$res = self::query()->where('email', '<>', 'sharing@nZEDb.com');
|
||||
|
||||
if ($role !== '') {
|
||||
$res->where('user_roles_id', $role);
|
||||
$res->where('roles_id', $role);
|
||||
}
|
||||
|
||||
if ($username !== '') {
|
||||
@@ -322,7 +323,7 @@ class User extends Authenticatable
|
||||
$userName = trim($userName);
|
||||
$email = trim($email);
|
||||
|
||||
$rateLimit = UserRole::query()->where('id', $role)->value('rate_limit');
|
||||
$rateLimit = Role::query()->where('id', $role)->value('rate_limit');
|
||||
|
||||
if (! self::isValidUsername($userName)) {
|
||||
return self::ERR_SIGNUP_BADUNAME;
|
||||
@@ -471,20 +472,18 @@ class User extends Authenticatable
|
||||
if ($apiRequests) {
|
||||
UserRequest::clearApiRequests(false);
|
||||
$query = "
|
||||
SELECT users.*, user_roles.name AS rolename, COUNT(user_requests.id) AS apirequests
|
||||
SELECT users.*, COUNT(user_requests.id) AS apirequests
|
||||
FROM users
|
||||
INNER JOIN user_roles ON user_roles.id = users.user_roles_id
|
||||
LEFT JOIN user_requests ON user_requests.users_id = users.id
|
||||
WHERE users.id != 0 %s %s %s %s
|
||||
WHERE users.id != 0 %s %s %s
|
||||
AND email != 'sharing@nZEDb.com'
|
||||
GROUP BY users.id
|
||||
ORDER BY %s %s %s";
|
||||
} else {
|
||||
$query = '
|
||||
SELECT users.*, user_roles.name AS rolename
|
||||
SELECT users.*
|
||||
FROM users
|
||||
INNER JOIN user_roles ON user_roles.id = users.user_roles_id
|
||||
WHERE 1=1 %s %s %s %s
|
||||
WHERE 1=1 %s %s %s
|
||||
ORDER BY %s %s %s';
|
||||
}
|
||||
$order = self::getBrowseOrder($orderBy);
|
||||
@@ -495,7 +494,6 @@ class User extends Authenticatable
|
||||
! empty($userName) ? 'AND users.username '.'LIKE '.DB::connection()->getPdo()->quote('%'.$userName.'%') : '',
|
||||
! empty($email) ? 'AND users.email '.'LIKE '.DB::connection()->getPdo()->quote('%'.$email.'%') : '',
|
||||
! empty($host) ? 'AND users.host '.'LIKE '.DB::connection()->getPdo()->quote('%'.$host.'%') : '',
|
||||
(! empty($role) ? ('AND users.user_roles_id = '.$role) : ''),
|
||||
$order[0],
|
||||
$order[1],
|
||||
($start === false ? '' : ('LIMIT '.$offset.' OFFSET '.$start))
|
||||
@@ -863,7 +861,7 @@ class User extends Authenticatable
|
||||
* @param $userName
|
||||
* @param $password
|
||||
* @param $email
|
||||
* @param $role
|
||||
* @param $role
|
||||
* @param $notes
|
||||
* @param $host
|
||||
* @param int $invites
|
||||
@@ -879,7 +877,7 @@ class User extends Authenticatable
|
||||
return false;
|
||||
}
|
||||
|
||||
$rateLimit = UserRole::query()->where('id', $role)->value('rate_limit');
|
||||
$rateLimit = Role::query()->where('id', $role)->value('rate_limit');
|
||||
|
||||
if (\defined('NN_INSTALLER')) {
|
||||
$storeips = '';
|
||||
@@ -887,12 +885,11 @@ class User extends Authenticatable
|
||||
$storeips = (int) Settings::settingValue('..storeuserips') === 1 ? $host : '';
|
||||
}
|
||||
|
||||
return self::create(
|
||||
$user = self::create(
|
||||
[
|
||||
'username' => $userName,
|
||||
'password' => $password,
|
||||
'email' => $email,
|
||||
'user_roles_id' => $role,
|
||||
'host' => $storeips,
|
||||
'api_token' => md5(Password::getRepository()->createNewToken()),
|
||||
'invites' => $invites,
|
||||
@@ -901,7 +898,11 @@ class User extends Authenticatable
|
||||
'notes' => $notes,
|
||||
'rate_limit' => $rateLimit,
|
||||
]
|
||||
)->id;
|
||||
);
|
||||
|
||||
$user->assignRole($role);
|
||||
|
||||
return $user->id;
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,165 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* App\Models\UserRole.
|
||||
*
|
||||
* @property int $id
|
||||
* @property string $name
|
||||
* @property int $apirequests
|
||||
* @property int $downloadrequests
|
||||
* @property int $defaultinvites
|
||||
* @property bool $isdefault
|
||||
* @property bool $canpreview
|
||||
* @property bool $hideads
|
||||
* @property int $donation
|
||||
* @property int $addyears
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\RoleExcludedCategory[] $roleExcludedCategory
|
||||
* @property-read \Illuminate\Database\Eloquent\Collection|\App\Models\User[] $users
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserRole whereAddyears($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserRole whereApirequests($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserRole whereCanpreview($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserRole whereDefaultinvites($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserRole whereDonation($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserRole whereDownloadrequests($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserRole whereHideads($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserRole whereId($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserRole whereIsdefault($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder|\App\Models\UserRole whereName($value)
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
class UserRole extends Model
|
||||
{
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
public $timestamps = false;
|
||||
|
||||
/**
|
||||
* @var bool
|
||||
*/
|
||||
protected $dateFormat = false;
|
||||
|
||||
/**
|
||||
* @var array
|
||||
*/
|
||||
protected $guarded = [];
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Relations\HasMany
|
||||
*/
|
||||
public function users()
|
||||
{
|
||||
return $this->hasMany(User::class, 'user_roles_id');
|
||||
}
|
||||
|
||||
public function roleExcludedCategory()
|
||||
{
|
||||
return $this->hasMany(RoleExcludedCategory::class, 'user_roles_id');
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Collection|static[]
|
||||
*/
|
||||
public static function getUsersByRole()
|
||||
{
|
||||
return self::query()->select(['name'])->withCount('users')->groupBy('name')->having('users_count', '>', 0)->orderBy('users_count', 'desc')->get();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public static function getRoles(): array
|
||||
{
|
||||
return self::all()->toArray();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
*
|
||||
* @return \Illuminate\Database\Eloquent\Model|null|static
|
||||
*/
|
||||
public static function getRoleById($id)
|
||||
{
|
||||
return self::query()->where('id', $id)->first();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $request
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public static function addRole($request): int
|
||||
{
|
||||
return self::query()->insertGetId(
|
||||
[
|
||||
'name' => $request['name'],
|
||||
'apirequests' => $request['apirequests'],
|
||||
'downloadrequests' => $request['name'],
|
||||
'defaultinvites' => $request['defaultinvites'],
|
||||
'canpreview' => $request['canpreview'],
|
||||
'hideads' => $request['hideads'],
|
||||
'donation' => $request['donation'],
|
||||
'addyears' => $request['addyears'],
|
||||
'rate_limit' => $request['rate_limit'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $request
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public static function updateRole($request): int
|
||||
{
|
||||
User::query()->where('user_roles_id', $request['id'])->update(['rate_limit' => $request['rate_limit']]);
|
||||
|
||||
return self::query()->where('id', $request['id'])->update(
|
||||
[
|
||||
'name' => $request['name'],
|
||||
'apirequests' => $request['apirequests'],
|
||||
'isdefault' => $request['isdefault'],
|
||||
'downloadrequests' => $request['downloadrequests'],
|
||||
'defaultinvites' => $request['defaultinvites'],
|
||||
'canpreview' => $request['canpreview'],
|
||||
'hideads' => $request['hideads'],
|
||||
'donation' => $request['donation'],
|
||||
'addyears' => $request['addyears'],
|
||||
'rate_limit' => $request['rate_limit'],
|
||||
]
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $id
|
||||
* @return mixed
|
||||
*/
|
||||
public static function deleteRole($id)
|
||||
{
|
||||
$res = User::query()->where('user_roles_id', $id)->get(['id']);
|
||||
if (\count($res) > 0) {
|
||||
$userIds = [];
|
||||
foreach ($res as $user) {
|
||||
$userIds[] = $user['id'];
|
||||
}
|
||||
$defaultRole = self::getDefaultRole();
|
||||
if ($defaultRole !== null) {
|
||||
User::query()->whereIn('id', $userIds)->update(['user_roles_id' => $defaultRole->id]);
|
||||
}
|
||||
}
|
||||
|
||||
return self::query()->where('id', $id)->delete();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Database\Eloquent\Model|null|static
|
||||
*/
|
||||
public static function getDefaultRole()
|
||||
{
|
||||
return self::query()->where('isdefault', '=', 1)->first();
|
||||
}
|
||||
}
|
||||
@@ -1,59 +0,0 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
0 => [
|
||||
'name' => 'User',
|
||||
'apirequests' => 10,
|
||||
'downloadrequests' => 10,
|
||||
'defaultinvites' => 1,
|
||||
'isdefault' => 1,
|
||||
'canpreview' => 0,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
],
|
||||
1 => [
|
||||
'name' => 'Admin',
|
||||
'apirequests' => 1000,
|
||||
'downloadrequests' => 1000,
|
||||
'defaultinvites' => 1000,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 1,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
],
|
||||
2 => [
|
||||
'name' => 'Disabled',
|
||||
'apirequests' => 0,
|
||||
'downloadrequests' => 0,
|
||||
'defaultinvites' => 0,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 0,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
],
|
||||
3 => [
|
||||
'name' => 'Moderator',
|
||||
'apirequests' => 1000,
|
||||
'downloadrequests' => 1000,
|
||||
'defaultinvites' => 1000,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 1,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
],
|
||||
4 => [
|
||||
'name' => 'Friend',
|
||||
'apirequests' => 100,
|
||||
'downloadrequests' => 100,
|
||||
'defaultinvites' => 5,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 1,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
],
|
||||
];
|
||||
@@ -12,7 +12,6 @@ class DatabaseSeeder extends Seeder
|
||||
public function run()
|
||||
{
|
||||
// $this->call(UsersTableSeeder::class);
|
||||
$this->call(UserRolesTableSeeder::class);
|
||||
$this->call(CountriesSeeder::class);
|
||||
$this->call(CategoriesTableSeeder::class);
|
||||
$this->call(CategoryRegexesTableSeeder::class);
|
||||
@@ -25,4 +24,4 @@ class DatabaseSeeder extends Seeder
|
||||
$this->call(ReleaseNamingRegexesTableSeeder::class);
|
||||
$this->call(SettingsTableSeeder::class);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,89 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class UserRolesTableSeeder extends Seeder
|
||||
{
|
||||
|
||||
/**
|
||||
* Auto generated seed file
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run()
|
||||
{
|
||||
|
||||
|
||||
\DB::table('user_roles')->delete();
|
||||
|
||||
\DB::table('user_roles')->insert(array (
|
||||
0 =>
|
||||
array (
|
||||
'id' => 1,
|
||||
'name' => 'User',
|
||||
'apirequests' => 10,
|
||||
'downloadrequests' => 10,
|
||||
'defaultinvites' => 1,
|
||||
'isdefault' => 1,
|
||||
'canpreview' => 0,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
),
|
||||
1 =>
|
||||
array (
|
||||
'id' => 2,
|
||||
'name' => 'Admin',
|
||||
'apirequests' => 1000,
|
||||
'downloadrequests' => 1000,
|
||||
'defaultinvites' => 1000,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 1,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
),
|
||||
2 =>
|
||||
array (
|
||||
'id' => 3,
|
||||
'name' => 'Disabled',
|
||||
'apirequests' => 0,
|
||||
'downloadrequests' => 0,
|
||||
'defaultinvites' => 0,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 0,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
),
|
||||
3 =>
|
||||
array (
|
||||
'id' => 4,
|
||||
'name' => 'Moderator',
|
||||
'apirequests' => 1000,
|
||||
'downloadrequests' => 1000,
|
||||
'defaultinvites' => 1000,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 1,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
),
|
||||
4 =>
|
||||
array (
|
||||
'id' => 5,
|
||||
'name' => 'Friend',
|
||||
'apirequests' => 100,
|
||||
'downloadrequests' => 100,
|
||||
'defaultinvites' => 5,
|
||||
'isdefault' => 0,
|
||||
'canpreview' => 1,
|
||||
'hideads' => 0,
|
||||
'donation' => 0,
|
||||
'addyears' => 0,
|
||||
),
|
||||
));
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
# Add new user permission related tables
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 0;
|
||||
|
||||
DROP TABLE IF EXISTS roles;
|
||||
CREATE TABLE roles (
|
||||
id int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
name varchar(255) NOT NULL,
|
||||
guard_name varchar(255) NOT NULL,
|
||||
apirequests int(10) unsigned NOT NULL,
|
||||
rate_limit int(11) NOT NULL DEFAULT 60,
|
||||
downloadrequests int(10) unsigned NOT NULL,
|
||||
defaultinvites int(10) unsigned NOT NULL,
|
||||
isdefault tinyint(1) NOT NULL DEFAULT 0,
|
||||
canpreview tinyint(1) NOT NULL DEFAULT 0,
|
||||
hideads tinyint(1) NOT NULL DEFAULT 0,
|
||||
donation int(11) NOT NULL DEFAULT 0,
|
||||
addyears int(11) NOT NULL DEFAULT 0,
|
||||
created_at timestamp NULL DEFAULT NULL,
|
||||
updated_at timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (id)
|
||||
)
|
||||
ENGINE=InnoDB
|
||||
AUTO_INCREMENT=1
|
||||
DEFAULT CHARSET=utf8
|
||||
COLLATE=utf8_unicode_ci;
|
||||
|
||||
DROP TABLE IF EXISTS role_has_permissions;
|
||||
CREATE TABLE role_has_permissions (
|
||||
permission_id int(10) unsigned NOT NULL,
|
||||
role_id int(10) unsigned NOT NULL,
|
||||
PRIMARY KEY (permission_id,role_id),
|
||||
KEY role_has_permissions_role_id_foreign (role_id),
|
||||
CONSTRAINT role_has_permissions_permission_id_foreign FOREIGN KEY (permission_id) REFERENCES permissions (id) ON DELETE CASCADE,
|
||||
CONSTRAINT role_has_permissions_role_id_foreign FOREIGN KEY (role_id) REFERENCES roles (id) ON DELETE CASCADE
|
||||
)
|
||||
ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8
|
||||
COLLATE=utf8_unicode_ci;
|
||||
|
||||
DROP TABLE IF EXISTS permissions;
|
||||
CREATE TABLE permissions (
|
||||
id int(10) unsigned NOT NULL AUTO_INCREMENT,
|
||||
name varchar(255) NOT NULL,
|
||||
guard_name varchar(255) NOT NULL,
|
||||
created_at timestamp NULL DEFAULT NULL,
|
||||
updated_at timestamp NULL DEFAULT NULL,
|
||||
PRIMARY KEY (id)
|
||||
)
|
||||
ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8
|
||||
COLLATE=utf8_unicode_ci;
|
||||
|
||||
DROP TABLE IF EXISTS model_has_permissions;
|
||||
CREATE TABLE model_has_permissions (
|
||||
permission_id int(10) unsigned NOT NULL,
|
||||
model_type varchar(255) NOT NULL,
|
||||
model_id bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (permission_id,model_id,model_type),
|
||||
KEY model_has_permissions_model_type_model_id_index (model_type,model_id),
|
||||
CONSTRAINT model_has_permissions_permission_id_foreign FOREIGN KEY (permission_id) REFERENCES permissions (id) ON DELETE CASCADE
|
||||
)
|
||||
ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8
|
||||
COLLATE=utf8_unicode_ci;
|
||||
|
||||
DROP TABLE IF EXISTS model_has_roles;
|
||||
CREATE TABLE model_has_roles (
|
||||
role_id int(10) unsigned NOT NULL,
|
||||
model_type varchar(255) COLLATE utf8_unicode_ci NOT NULL,
|
||||
model_id bigint(20) unsigned NOT NULL,
|
||||
PRIMARY KEY (role_id,model_id,model_type),
|
||||
KEY model_has_roles_model_type_model_id_index (model_type,model_id),
|
||||
CONSTRAINT model_has_roles_role_id_foreign FOREIGN KEY (role_id) REFERENCES roles (id) ON DELETE CASCADE
|
||||
)
|
||||
ENGINE=InnoDB
|
||||
DEFAULT CHARSET=utf8
|
||||
COLLATE=utf8_unicode_ci;
|
||||
|
||||
SET FOREIGN_KEY_CHECKS = 1;
|
||||
Reference in New Issue
Block a user