cmsrs / laracms
cmsRS package
1.0.6
2022-10-21 17:24 UTC
Requires
- guzzlehttp/guzzle: ^7.0.1
- intervention/image: ^2.7
- laravel/ui: ^4.0
- php-open-source-saver/jwt-auth: ^2.0
Requires (Dev)
- nunomaduro/collision: ^6.2
- orchestra/testbench: ^7.6
- phpunit/phpunit: ^9.5
README
composer require cmsrs/laracms
php artisan vendor:publish --provider="Cmsrs\Laracms\Providers\LaracmsProvider" --force
php artisan migrate
php artisan db:seed
Remove lines from file: ./routes/web.php:
//Route::get('/', function () { // return view('welcome'); //});
Configure jwtAuth (in nutshell):
php artisan vendor:publish --provider="PHPOpenSourceSaver\JWTAuth\Providers\LaravelServiceProvider"
php artisan jwt:secret
in config/auth.php change to:
'defaults' => [ 'guard' => 'api', 'passwords' => 'users', ], 'guards' => [ 'api' => [ 'driver' => 'jwt', //'token', 'provider' => 'users', 'hash' => false ], 'web' => [ 'driver' => 'session', 'provider' => 'users', ], ], 'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App\Models\User::class, ], ],
add User.php file in: app/Models:
<?php namespace App\Models; use Illuminate\Notifications\Notifiable; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Auth; use PHPOpenSourceSaver\JWTAuth\Contracts\JWTSubject; class User extends Authenticatable implements JWTSubject { use Notifiable; public static $role = [ 'admin' => 'admin', 'client' => 'client' ]; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password' , 'role' ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; /** * Get the identifier that will be stored in the subject claim of the JWT. * * @return mixed */ public function getJWTIdentifier() { return $this->getKey(); } /** * Return a key value array, containing any custom claims to be added to the JWT. * * @return array */ public function getJWTCustomClaims() { return []; } public function setPasswordAttribute($password) { if (!empty($password)) { $this->attributes['password'] = Hash::make($password); } } static public function getTokenForClient() { $user = Auth::user(); if( empty($user) ){ throw new \Exception("User not auth"); } return $user->getTokenClient(); } public function getTokenClient() { $appKey = env('APP_KEY'); if( empty($appKey) ){ throw new \Exception("empty APP_KEY in config file"); } return sha1($this->email."_".$this->id."_".$appKey); } public function checkClientByToken($token) { $expectedToken = $this->getTokenClient(); if($expectedToken == $token){ return true; } return false; } static public function checkApiClientByToken($token) { $user = Auth::user(); if( empty($user) ){ throw new \Exception("User not auth - for check"); } if( !$user->checkClientByToken($token) ){ throw new \Exception("User not valid - check"); } return true; } }
php artisan serve
MANAGMENT
-
go to the website http://127.0.0.1:8000/admin/
log in as:
username: adm@cmsrs.pl
password: cmsrs123
-
create main page (page type: main_page)
-
add menu
-
add pages