From 0b5ea5df09f30fbb2c723278315bb5c1636e5009 Mon Sep 17 00:00:00 2001 From: Roland Schneider Date: Sun, 26 Sep 2021 11:45:01 +0200 Subject: [PATCH] group training: add admin menu improvements, add build environment files --- backend/controllers/SiteController.php | 21 ++++---- common/components/RoleDefinition.php | 40 ++++++++------ .../m210924_220452_add_permission_trainer.php | 46 ++++++++++++++++ customer/app/angular.json | 52 +++++++++++++++++++ customer/app/package.json | 3 ++ customer/app/src/app/services/endpoints.ts | 29 ++++++----- .../environments/environment.cutler-gyor.ts | 4 ++ .../environments/environment.cutler-movar.ts | 4 ++ .../app/src/environments/environment.prod.ts | 3 +- customer/app/src/environments/environment.ts | 3 +- 10 files changed, 165 insertions(+), 40 deletions(-) create mode 100644 console/migrations/m210924_220452_add_permission_trainer.php create mode 100644 customer/app/src/environments/environment.cutler-gyor.ts create mode 100644 customer/app/src/environments/environment.cutler-movar.ts diff --git a/backend/controllers/SiteController.php b/backend/controllers/SiteController.php index 0132472..29be38a 100644 --- a/backend/controllers/SiteController.php +++ b/backend/controllers/SiteController.php @@ -71,10 +71,11 @@ class SiteController extends Controller $model = new LoginForm(); $model->roles = [ 'admin', - 'employee' + 'employee', + 'trainer', ]; if ($model->load(Yii::$app->request->post()) && $model->login()) { - + $geoip = Helper::getGeoIp(); @@ -83,14 +84,14 @@ class SiteController extends Controller $ipAddress = ( isset($geoip) && isset($geoip->ip) ) ? $geoip->ip : "ismeretlen"; $geoCity = ( isset($geoip) && isset($geoip->city) ) ? $geoip->city : "ismeretlen"; $message = "Bejelentkezés: " .$user->username. " Ip cím:". $ipAddress . " Város: " . $geoCity; - + Log::log([ 'type' =>Log::$TYPE_LOGIN, 'message' => $message ]); - + $this->sendLoginMail(); - + return $this->goBack(); } else { return $this->render('login', [ @@ -102,32 +103,32 @@ class SiteController extends Controller protected function sendLoginMail(){ if ( \Yii::$app->params['login_admin_email'] == true){ $geoip = Helper::getGeoIp(); - + $user = User::findOne(\Yii::$app->user->id); $message = \Yii::$app->mailer->compose('login_admin', [ 'model' => $user, 'geoip' => $geoip, 'company' => Helper::getCompany() ]); - + $message->setFrom( \Yii::$app->params['infoEmail'] ) ->setTo( \Yii::$app->params['notify_mail'] ) ->setSubject('Admin bejelentkezés - ' . $user->username ) ->send(); } } - + public function actionLogout() { Yii::$app->user->logout(); return $this->goHome(); } - + public function actionUploadImage(){ \yii::$app->request->enableCsrfValidation = false; $model = new UploadForm(); - + return $this->render('upload', ['model' =>$model]); } } diff --git a/common/components/RoleDefinition.php b/common/components/RoleDefinition.php index 0816437..e5e4468 100644 --- a/common/components/RoleDefinition.php +++ b/common/components/RoleDefinition.php @@ -4,17 +4,18 @@ namespace common\components; use \Yii; class RoleDefinition{ - - - + + + public static function roleLabels(){ return [ 'reception' => Yii::t('common/role' ,'Reception'), 'admin' => Yii::t('common/role' ,'Administrator'), 'employee' => Yii::t('common/role' ,'Employee'), + 'Trainer' => Yii::t('common/role' ,'Edző'), ]; } - + public static function getRoleLabel($role){ $result = null; $roleLabels = self::roleLabels(); @@ -23,8 +24,8 @@ class RoleDefinition{ } return $result; } - - + + public static function roleDefinitions(){ return [ 'employee' => [ @@ -38,8 +39,8 @@ class RoleDefinition{ ], ]; } - - + + public static function getRoleDefinition($role){ $defs = self::roleDefinitions(); $result = null; @@ -49,14 +50,14 @@ class RoleDefinition{ $result = $defs[$role]; return $result; } - + public static function getRolesCanAllow($role){ $result = []; $def = self::getRoleDefinition($role); if ( isset($def)){ $result = $def['canAllow']; } - + return $result; } @@ -75,11 +76,11 @@ class RoleDefinition{ } return $result; } - + public static function isAdmin(){ return self::can('admin'); } - + public static function isReception(){ return self::can('reception'); } @@ -87,7 +88,16 @@ class RoleDefinition{ public static function isEmployee(){ return self::can('employee'); } - + + public static function isTrainer(){ + return self::can('trainer'); + } + + + public static function isLoggedUser(){ + return self::isTrainer() || self::isAdmin() || self::isEmployee() + || self::isReception(); + } /* * [ * 'role1' => 'template1', @@ -104,5 +114,5 @@ class RoleDefinition{ } return $result; } - -} \ No newline at end of file + +} diff --git a/console/migrations/m210924_220452_add_permission_trainer.php b/console/migrations/m210924_220452_add_permission_trainer.php new file mode 100644 index 0000000..50fd6c1 --- /dev/null +++ b/console/migrations/m210924_220452_add_permission_trainer.php @@ -0,0 +1,46 @@ +authManager; + $role = $am->createRole("trainer"); + $am->add($role); + } + + /** + * {@inheritdoc} + */ + public function safeDown() + { + echo "m210924_220452_add_permission_trainer cannot be reverted.\n"; + + return false; + } + + /* + // Use up()/down() to run migration code without a transaction. + public function up() + { + + } + + public function down() + { + echo "m210924_220452_add_permission_trainer cannot be reverted.\n"; + + return false; + } + */ +} diff --git a/customer/app/angular.json b/customer/app/angular.json index fe57eb3..0f43339 100644 --- a/customer/app/angular.json +++ b/customer/app/angular.json @@ -64,6 +64,58 @@ "maximumWarning": "6kb" } ] + }, + "cutler-movar": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.cutler-movar.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb" + } + ] + }, + "cutler-gyor": { + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.cutler-gyor.ts" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "budgets": [ + { + "type": "initial", + "maximumWarning": "2mb", + "maximumError": "5mb" + }, + { + "type": "anyComponentStyle", + "maximumWarning": "6kb" + } + ] } }, "defaultConfiguration": "" diff --git a/customer/app/package.json b/customer/app/package.json index 47f2e3f..b314fb1 100644 --- a/customer/app/package.json +++ b/customer/app/package.json @@ -5,6 +5,9 @@ "ng": "ng", "start": "ng serve", "build": "ng build", + "build:prod": "ng build --configuration production", + "build:prod-cutler-gyor": "ng build --configuration cutler-gyor", + "build:prod-cutler-movar": "ng build --configuration cutler-movar", "test": "ng test", "lint": "ng lint", "e2e": "ng e2e" diff --git a/customer/app/src/app/services/endpoints.ts b/customer/app/src/app/services/endpoints.ts index c2e3e8d..07cfd8d 100644 --- a/customer/app/src/app/services/endpoints.ts +++ b/customer/app/src/app/services/endpoints.ts @@ -1,51 +1,54 @@ +import {environment} from "../../environments/environment"; + export class Endpoints { - private static contextPath = "http://localhost:86/fitness_web"; - private static baseUrl: string = Endpoints.contextPath + "/customerapi/web/index.php?r="; + + // private static apiUrl: string = "http://localhost:86/fitness_web/customerapi/web/index.php?r="; + private static apiUrl: string = environment.apiUrl; public static POST_USERS_AUTHENTICATE(){ - return `${this.baseUrl}user/login`; + return `${this.apiUrl}user/login`; } public static POST_USER_PASSWORD_CHANGE(){ - return `${this.baseUrl}user/password-change`; + return `${this.apiUrl}user/password-change`; } public static GET_EVENTS( ){ - return `${this.baseUrl}/events`; + return `${this.apiUrl}/events`; } public static GET_EVENT( id: number){ - return `${this.baseUrl}/event/event&id_event=${id}`; + return `${this.apiUrl}/event/event&id_event=${id}`; } public static POST_EVENT_REGISTRATIONS_REGISTER(id: number){ - return `${this.baseUrl}/event-registration/register&id_event=${id}`; + return `${this.apiUrl}/event-registration/register&id_event=${id}`; } public static GET_EVENT_REGISTRATIONS_FIND(){ - return `${this.baseUrl}/event-registration/index`; + return `${this.apiUrl}/event-registration/index`; } public static GET_REGISTRATION( id: number){ - return `${this.baseUrl}/event-registration/registration&id_registration=${id}`; + return `${this.apiUrl}/event-registration/registration&id_registration=${id}`; } public static POST_EVENT_CANCEL( id: number){ - return `${this.baseUrl}/event/cancel&id_event=${id}`; + return `${this.apiUrl}/event/cancel&id_event=${id}`; } public static POST_EVENT_REGISTRATION_CANCEL( id: number){ - return `${this.baseUrl}/event-registration/cancel&idRegistration=${id}`; + return `${this.apiUrl}/event-registration/cancel&idRegistration=${id}`; } public static GET_EVENT_TYPES(){ - return `${this.baseUrl}/event-type`; + return `${this.apiUrl}/event-type`; } public static GET_EVENTS_AVAILABLE(){ - return `${this.baseUrl}/event/available`; + return `${this.apiUrl}/event/available`; } } diff --git a/customer/app/src/environments/environment.cutler-gyor.ts b/customer/app/src/environments/environment.cutler-gyor.ts new file mode 100644 index 0000000..ac18a9b --- /dev/null +++ b/customer/app/src/environments/environment.cutler-gyor.ts @@ -0,0 +1,4 @@ +export const environment = { + production: true, + apiUrl: "http://cutler-gyor:80/fitness_web/customerapi/web/index.php?r=" +}; diff --git a/customer/app/src/environments/environment.cutler-movar.ts b/customer/app/src/environments/environment.cutler-movar.ts new file mode 100644 index 0000000..2dcaa88 --- /dev/null +++ b/customer/app/src/environments/environment.cutler-movar.ts @@ -0,0 +1,4 @@ +export const environment = { + production: true, + apiUrl: "http://cutler-movar:80/fitness_web/customerapi/web/index.php?r=" +}; diff --git a/customer/app/src/environments/environment.prod.ts b/customer/app/src/environments/environment.prod.ts index 3612073..ac61d59 100644 --- a/customer/app/src/environments/environment.prod.ts +++ b/customer/app/src/environments/environment.prod.ts @@ -1,3 +1,4 @@ export const environment = { - production: true + production: true, + apiUrl: "http://myapi:80/fitness_web/customerapi/web/index.php?r=" }; diff --git a/customer/app/src/environments/environment.ts b/customer/app/src/environments/environment.ts index 30d7bcc..70f676e 100644 --- a/customer/app/src/environments/environment.ts +++ b/customer/app/src/environments/environment.ts @@ -3,7 +3,8 @@ // The list of file replacements can be found in `angular.json`. export const environment = { - production: false + production: false, + apiUrl: 'http://localhost:86/fitness_web/customerapi/web/index.php?r=' }; /*