├── .gitignore ├── .phpunit.result.cache ├── .travis.yml ├── LICENSE ├── README.md ├── composer.json ├── phpunit.xml.dist ├── src ├── Config │ ├── laravel_user_management.php │ └── permission.php ├── Console │ └── .gitkeep ├── Contracts │ └── UserManagementContracts.php ├── Database │ ├── Migrations │ │ ├── .gitkeep │ │ ├── 2019_01_01_111111_create_users_table.php │ │ ├── 2019_01_01_222222_create_departments_table.php │ │ ├── 2019_01_01_333333_create_user_department_users_table.php │ │ ├── 2019_01_01_444444_create_permission_tables.php │ │ ├── 2019_02_02_555555_create_soft-delete_users_table.php │ │ └── 2019_10_17_110654_create_password_reset_table.php │ └── Seeders │ │ ├── .gitkeep │ │ ├── Department │ │ ├── DepartmentTableSeeder.php │ │ └── MasterDepartmentTableSeeder.php │ │ ├── Permission │ │ ├── MasterPermissionTableSeeder.php │ │ └── PermissionTableSeeder.php │ │ ├── Role │ │ ├── MasterRoleTableSeeder.php │ │ └── RoleTableSeeder.php │ │ └── UserManagementDatabaseSeeder.php ├── Entities │ ├── .gitkeep │ ├── Department.php │ ├── Permission.php │ ├── Role.php │ ├── User.php │ └── export │ │ ├── Department.php │ │ ├── Permission.php │ │ ├── Role.php │ │ └── User.php ├── Facade │ └── UserManagement.php ├── Http │ ├── Controllers │ │ ├── .gitkeep │ │ ├── Admin │ │ │ ├── DepartmentsController.php │ │ │ ├── PermissionsController.php │ │ │ ├── RolesController.php │ │ │ ├── UsersController.php │ │ │ └── export │ │ │ │ ├── DepartmentsController.php │ │ │ │ ├── PermissionsController.php │ │ │ │ ├── RolesController.php │ │ │ │ └── UsersController.php │ │ └── Auth │ │ │ ├── AuthController.php │ │ │ └── export │ │ │ └── AuthController.php │ └── Requests │ │ ├── .gitkeep │ │ ├── Admin │ │ ├── StoreDepartment.php │ │ ├── StorePermission.php │ │ ├── StoreRole.php │ │ ├── StoreUser.php │ │ ├── UpdateDepartment.php │ │ ├── UpdatePermission.php │ │ ├── UpdateRole.php │ │ └── UpdateUser.php │ │ └── Auth │ │ ├── UserLogin.php │ │ └── UserRegistration.php ├── LaravelUserManagementProvider.php ├── Public │ └── mekaeils-package │ │ ├── css │ │ └── style.css │ │ ├── fonts │ │ └── Ubuntu │ │ │ ├── Ubuntu-Bold.eot │ │ │ ├── Ubuntu-Bold.ttf │ │ │ ├── Ubuntu-Bold.woff │ │ │ ├── Ubuntu-Bold.woff2 │ │ │ ├── Ubuntu-Light.eot │ │ │ ├── Ubuntu-Light.ttf │ │ │ ├── Ubuntu-Light.woff │ │ │ ├── Ubuntu-Light.woff2 │ │ │ ├── Ubuntu-Medium.eot │ │ │ ├── Ubuntu-Medium.ttf │ │ │ ├── Ubuntu-Medium.woff │ │ │ ├── Ubuntu-Medium.woff2 │ │ │ ├── Ubuntu-Regular.eot │ │ │ ├── Ubuntu-Regular.ttf │ │ │ ├── Ubuntu-Regular.woff │ │ │ └── Ubuntu-Regular.woff2 │ │ ├── images │ │ ├── admin-panel.jpg │ │ ├── create-user.jpg │ │ ├── login-register.jpg │ │ ├── logo-notification.jpg │ │ ├── logo-translation.jpg │ │ ├── logo-user-management.jpg │ │ └── vuejs │ │ │ ├── home.jpg │ │ │ ├── login.jpg │ │ │ ├── meterialKit.jpg │ │ │ └── register.jpg │ │ ├── js │ │ ├── dashboard.js │ │ ├── misc.js │ │ └── off-canvas.js │ │ └── vendors │ │ ├── css │ │ └── vendor.bundle.base.css │ │ ├── iconfonts │ │ └── mdi │ │ │ ├── README.md │ │ │ ├── bower.json │ │ │ ├── css │ │ │ ├── materialdesignicons.css │ │ │ ├── materialdesignicons.css.map │ │ │ ├── materialdesignicons.min.css │ │ │ └── materialdesignicons.min.css.map │ │ │ ├── fonts │ │ │ ├── materialdesignicons-webfont.eot │ │ │ ├── materialdesignicons-webfont.svg │ │ │ ├── materialdesignicons-webfont.ttf │ │ │ ├── materialdesignicons-webfont.woff │ │ │ └── materialdesignicons-webfont.woff2 │ │ │ ├── license.md │ │ │ ├── package.json │ │ │ ├── preview.html │ │ │ └── scss │ │ │ ├── _animated.scss │ │ │ ├── _core.scss │ │ │ ├── _extras.scss │ │ │ ├── _functions.scss │ │ │ ├── _icons.scss │ │ │ ├── _path.scss │ │ │ ├── _variables.scss │ │ │ └── materialdesignicons.scss │ │ └── js │ │ ├── vendor.bundle.addons.js │ │ └── vendor.bundle.base.js ├── Repository │ ├── Contracts │ │ ├── BaseRepositoryInterface.php │ │ ├── DepartmentRepositoryInterface.php │ │ ├── PermissionRepositoryInterface.php │ │ ├── RoleRepositoryInterface.php │ │ └── UserRepositoryInterface.php │ └── Eloquents │ │ ├── BaseEloquentRepository.php │ │ ├── DepartmentRepository.php │ │ ├── PermissionRepository.php │ │ ├── RoleRepository.php │ │ └── UserRepository.php ├── Resource │ ├── js │ │ └── mekaeils-package │ │ │ ├── assets │ │ │ ├── demo.css │ │ │ ├── img │ │ │ │ ├── apple-icon.png │ │ │ │ ├── bg.jpg │ │ │ │ ├── bg2.jpg │ │ │ │ ├── bg3.jpg │ │ │ │ ├── bg7.jpg │ │ │ │ ├── city-profile.jpg │ │ │ │ ├── city.jpg │ │ │ │ ├── examples │ │ │ │ │ ├── clem-onojegaw.jpg │ │ │ │ │ ├── clem-onojeghuo.jpg │ │ │ │ │ ├── cynthia-del-rio.jpg │ │ │ │ │ ├── mariya-georgieva.jpg │ │ │ │ │ ├── olu-eletu.jpg │ │ │ │ │ ├── studio-1.jpg │ │ │ │ │ ├── studio-2.jpg │ │ │ │ │ ├── studio-3.jpg │ │ │ │ │ ├── studio-4.jpg │ │ │ │ │ └── studio-5.jpg │ │ │ │ ├── faces │ │ │ │ │ ├── avatar.jpg │ │ │ │ │ ├── camp.jpg │ │ │ │ │ ├── card-profile1-square.jpg │ │ │ │ │ ├── card-profile2-square.jpg │ │ │ │ │ ├── card-profile4-square.jpg │ │ │ │ │ ├── card-profile5-square.jpg │ │ │ │ │ ├── card-profile6-square.jpg │ │ │ │ │ ├── christian.jpg │ │ │ │ │ ├── kendall.jpg │ │ │ │ │ └── marc.jpg │ │ │ │ ├── landing.jpg │ │ │ │ ├── leaf1.png │ │ │ │ ├── leaf2.png │ │ │ │ ├── leaf3.png │ │ │ │ ├── leaf4.png │ │ │ │ ├── nature-2.jpg │ │ │ │ ├── nature-3.jpg │ │ │ │ ├── nature.jpg │ │ │ │ ├── profile.jpg │ │ │ │ ├── profile_city.jpg │ │ │ │ └── vue-mk-header.jpg │ │ │ └── scss │ │ │ │ ├── material-kit.scss │ │ │ │ └── material-kit │ │ │ │ ├── _alerts.scss │ │ │ │ ├── _autocomplete.scss │ │ │ │ ├── _badges.scss │ │ │ │ ├── _buttons.scss │ │ │ │ ├── _cards.scss │ │ │ │ ├── _carousel.scss │ │ │ │ ├── _checkboxes.scss │ │ │ │ ├── _colors.scss │ │ │ │ ├── _datepicker.scss │ │ │ │ ├── _dialogs.scss │ │ │ │ ├── _dropdown.scss │ │ │ │ ├── _example-pages.scss │ │ │ │ ├── _footers.scss │ │ │ │ ├── _headers.scss │ │ │ │ ├── _images.scss │ │ │ │ ├── _info-areas.scss │ │ │ │ ├── _inputs.scss │ │ │ │ ├── _layout.scss │ │ │ │ ├── _misc.scss │ │ │ │ ├── _mixins.scss │ │ │ │ ├── _navbars.scss │ │ │ │ ├── _pagination.scss │ │ │ │ ├── _pills.scss │ │ │ │ ├── _popups.scss │ │ │ │ ├── _progress.scss │ │ │ │ ├── _radios.scss │ │ │ │ ├── _responsive.scss │ │ │ │ ├── _shadows.scss │ │ │ │ ├── _tables.scss │ │ │ │ ├── _tabs.scss │ │ │ │ ├── _togglebutton.scss │ │ │ │ ├── _typography.scss │ │ │ │ ├── _variables.scss │ │ │ │ ├── mixins │ │ │ │ ├── _transparency.scss │ │ │ │ └── _vendor-prefixes.scss │ │ │ │ └── plugins │ │ │ │ ├── _perfect-scrollbar.scss │ │ │ │ └── _plugin-nouislider.scss │ │ │ ├── layout │ │ │ ├── MainFooter.vue │ │ │ ├── MainNavbar.vue │ │ │ └── MobileMenu.vue │ │ │ ├── main.js │ │ │ ├── plugins │ │ │ ├── globalComponents.js │ │ │ ├── globalDirectives.js │ │ │ ├── globalMixins.js │ │ │ └── material-kit.js │ │ │ ├── router.js │ │ │ └── views │ │ │ ├── App.vue │ │ │ ├── Index.vue │ │ │ ├── Landing.vue │ │ │ ├── Login.vue │ │ │ ├── Profile.vue │ │ │ ├── Register.vue │ │ │ └── components │ │ │ ├── BasicElementsSection.vue │ │ │ ├── JavascriptComponentsSection.vue │ │ │ ├── LaravelUserManagement.vue │ │ │ ├── NavPillsSection.vue │ │ │ ├── NavigationSection.vue │ │ │ ├── NotificationsSection.vue │ │ │ ├── SmallNavigationSection.vue │ │ │ ├── TabsSection.vue │ │ │ ├── TypographyImagesSection.vue │ │ │ └── Widgets │ │ │ ├── Badge.vue │ │ │ ├── Dropdown.vue │ │ │ ├── Modal.vue │ │ │ ├── Pagination.vue │ │ │ ├── Parallax.vue │ │ │ ├── Tabs.vue │ │ │ ├── cards │ │ │ ├── LoginCard.vue │ │ │ └── NavTabsCard.vue │ │ │ └── index.js │ ├── lang │ │ └── en │ │ │ └── trans.php │ └── views │ │ ├── mekaeils-package │ │ ├── layouts │ │ │ ├── alert.blade.php │ │ │ ├── breadcrumb.blade.php │ │ │ ├── footer.blade.php │ │ │ ├── header.blade.php │ │ │ ├── side-nav.blade.php │ │ │ └── top-nav.blade.php │ │ ├── master.blade.php │ │ └── vue │ │ │ └── master.blade.php │ │ └── user-management │ │ ├── auth │ │ ├── layouts │ │ │ ├── footer.blade.php │ │ │ └── header.blade.php │ │ ├── login.blade.php │ │ ├── master.blade.php │ │ └── register.blade.php │ │ ├── department │ │ ├── create.blade.php │ │ ├── edit.blade.php │ │ └── index.blade.php │ │ ├── master.blade.php │ │ ├── permission │ │ ├── create.blade.php │ │ ├── edit.blade.php │ │ └── index.blade.php │ │ ├── role │ │ ├── create.blade.php │ │ ├── edit.blade.php │ │ └── index.blade.php │ │ ├── side-nav.blade.php │ │ └── user │ │ ├── create.blade.php │ │ ├── edit.blade.php │ │ └── index.blade.php ├── Routes │ └── user_management.php ├── Tests │ └── .gitkeep └── UserManagement.php └── tests ├── SampleTest.php └── bootstrap.php /.gitignore: -------------------------------------------------------------------------------- 1 | vendor/ 2 | node_modules/ 3 | npm-debug.log 4 | 5 | # Laravel 4 specific 6 | bootstrap/compiled.php 7 | app/storage/ 8 | 9 | # Laravel 5 & Lumen specific 10 | public/storage 11 | public/hot 12 | storage/*.key 13 | .env.*.php 14 | .env.php 15 | .env 16 | Homestead.yaml 17 | Homestead.json 18 | 19 | # Rocketeer PHP task runner and deployment package. https://github.com/rocketeers/rocketeer 20 | .rocketeer/ 21 | composer.lock 22 | .DS_Store 23 | .idea -------------------------------------------------------------------------------- /.phpunit.result.cache: -------------------------------------------------------------------------------- 1 | C:37:"PHPUnit\Runner\DefaultTestResultCache":116:{a:2:{s:7:"defects";a:0:{}s:5:"times";a:1:{s:56:"Mekaeil\LaravelUserManagement\Test\sampleTest::testHello";d:0.007;}}} -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | sudo: false 4 | 5 | matrix: 6 | include: 7 | - php: 7.2 8 | env: LARAVEL_VERSION=5.5.* 9 | - php: 7.3 10 | env: LARAVEL_VERSION=5.5.* 11 | 12 | - php: 7.2 13 | env: LARAVEL_VERSION=5.6.* 14 | - php: 7.3 15 | env: LARAVEL_VERSION=5.6.* 16 | 17 | - php: 7.2 18 | env: LARAVEL_VERSION=5.7.* 19 | - php: 7.3 20 | env: LARAVEL_VERSION=5.7.* 21 | 22 | - php: 7.2 23 | env: LARAVEL_VERSION=5.8.* 24 | - php: 7.3 25 | env: LARAVEL_VERSION=5.8.* 26 | 27 | - php: 7.2 28 | env: LARAVEL_VERSION=6.* 29 | - php: 7.3 30 | env: LARAVEL_VERSION=6.* 31 | 32 | before_install: 33 | - if [[ $TRAVIS_PHP_VERSION =~ ^hhvm ]]; then echo 'hhvm.jit = false' >> /etc/hhvm/php.ini ; fi 34 | - composer self-update --stable -n 35 | - composer require "laravel/framework:${LARAVEL_VERSION}" --no-update -n 36 | 37 | install: 38 | - travis_retry composer install --no-suggest --prefer-dist -n -o 39 | 40 | script: 41 | - vendor/bin/phpunit --coverage-clover build/logs/clover.xml; 42 | 43 | after_script: 44 | - wget https://scrutinizer-ci.com/ocular.phar; 45 | - php ocular.phar code-coverage:upload --format=php-clover build/logs/clover.xml; 46 | - bash <(curl -s https://codecov.io/bash) 47 | © 2019 GitHub, Inc. -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Mekaeil 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mekaeil/laravel-user-management", 3 | "description": "With this package we can manage all of the users in our project.", 4 | "type": "package", 5 | "homepage": "https://mekaeil.me", 6 | "keywords": [ 7 | "Project", 8 | "laravel", 9 | "User Management", 10 | "Spatie", 11 | "laravel permission" 12 | ], 13 | "require": { 14 | "php": "^7.2.5|^8", 15 | "laravel/framework": "^5.5|^6.0|^7.0|^8.0|^9.0|^10.0", 16 | "spatie/laravel-permission": "^2.37|^3.0|^4.0|^5.0|^6.0" 17 | }, 18 | "require-dev": { 19 | "phpunit/phpunit": "^7.5|^8.0|^9.0|^10.0|^11.0", 20 | "mockery/mockery": "^1.0" 21 | }, 22 | "suggest": { 23 | "LaraPanel Framework": "Use the new version and refactored version here: https://github.com/weprodev/LaraPanel-Framework", 24 | "LaraPanel package": "Use the new version and refactored version here: https://github.com/weprodev/LaraPanel" 25 | }, 26 | "license": "MIT", 27 | "authors": [ 28 | { 29 | "name": "mekaeil", 30 | "email": "maikel1370@gmail.com" 31 | } 32 | ], 33 | "autoload": { 34 | "psr-4": { 35 | "Mekaeil\\LaravelUserManagement\\": "src" 36 | } 37 | }, 38 | "autoload-dev": { 39 | "psr-4": { 40 | "Mekaeil\\LaravelUserManagement\\Test\\": "tests" 41 | } 42 | }, 43 | "scripts": { 44 | "test": "phpunit" 45 | }, 46 | "extra": { 47 | "laravel": { 48 | "providers": [ 49 | "Mekaeil\\LaravelUserManagement\\LaravelUserManagementProvider" 50 | ] 51 | } 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 |  2 | 13 | 14 | 15 | ./tests 16 | 17 | 18 | 19 | 20 | ./src 21 | 22 | ./src/ 23 | 24 | 25 | 26 | 27 | 28 | 32 | 33 | -------------------------------------------------------------------------------- /src/Config/laravel_user_management.php: -------------------------------------------------------------------------------- 1 | 'users', 14 | // laravel_user_management.user_department_table 15 | 'user_department_table' => 'user_departments', 16 | 17 | /** 18 | * THIS TABLE IS NAME OF THE MANY TO MANY RELATIONAL TABLE 19 | * BETWEEN USERS TABLE & USER DEPARTMENTS TABLE 20 | * **/ 21 | // laravel_user_management.user_department_user_table 22 | 'user_department_user_table' => 'user_departments_users', 23 | 24 | // laravel_user_management.password_resets_table 25 | 'password_resets_table' => 'user_password_resets', 26 | 27 | 28 | // laravel_user_management.user_model 29 | 'user_model' => App\Entities\User::class, 30 | 31 | // laravel_user_management.row_list_per_page 32 | 'row_list_per_page' => 15, 33 | 34 | // laravel_user_management.admin_url 35 | 'admin_url' => env('APP_URL').'/admin', 36 | 37 | // laravel_user_management.logo_url 38 | 'logo_url' => env('APP_URL'). "/mekaeils-package/images/logo-user-management.jpg", 39 | 40 | 'auth' => [ 41 | 42 | // laravel_user_management.auth.enable 43 | 'enable' => true, 44 | 45 | // laravel_user_management.auth.login_url 46 | 'login_url' => 'user/login', 47 | 48 | // laravel_user_management.auth.register_url 49 | 'register_url' => 'user/register', 50 | 51 | // laravel_user_management.auth.logout_url 52 | 'logout_url' => 'user/logout', 53 | 54 | // laravel_user_management.auth.username 55 | 'username' => 'email', // email OR mobile 56 | 57 | /** 58 | * DEFAULT ROLE FOR USERS WANT TO REGISTER ON WEBSITE 59 | * YOU SHOULD DEFINE THIS ROLE IN SEEDER OR CREATE IT IN ADMIN PANEL 60 | * **/ 61 | // laravel_user_management.auth.user_default_role 62 | 'user_default_role' => 'User', 63 | 64 | /** 65 | * DEFAULT STATUS FOR USERS WANT TO REGISTER ON WEBSITE 66 | * IF IT'S SET ON 'PENDING' USER CAN NOT LOGIN IN WEBSITE 67 | * AND NEED TO ACCEPT BY ADMINISTRATOR 68 | * **/ 69 | // laravel_user_management.auth.default_user_status 70 | 'default_user_status' =>'accepted', /// 'pending','accepted','blocked' 71 | 72 | // laravel_user_management.auth.dashboard_route_name_user_redirection 73 | 'dashboard_route_name_user_redirection' => 'home' /// ** ROUTE NAME ** 74 | ], 75 | 76 | /** 77 | * IN THIS PACKAGE WE USE THE VUE.JS FOR PAGES IF YOU 78 | * WANT TO USE IT, ENABLE IT AND FOLLOW INSTALLATION STEPS IN README FILE. 79 | * **/ 80 | // laravel_user_management.vue_theme 81 | 'vue_theme' => false, // true, false | default: false 82 | 83 | ]; -------------------------------------------------------------------------------- /src/Console/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Console/.gitkeep -------------------------------------------------------------------------------- /src/Contracts/UserManagementContracts.php: -------------------------------------------------------------------------------- 1 | increments('id'); 19 | $table->string('first_name'); 20 | $table->string('last_name'); 21 | $table->string('email')->nullable()->unique(); 22 | $table->string('mobile')->nullable()->unique(); 23 | $table->string('password'); 24 | $table->enum('status',['pending','accepted','blocked'])->default('pending'); 25 | $table->boolean('email_verified')->default(false); 26 | $table->boolean('mobile_verified')->default(false); 27 | $table->rememberToken(); 28 | $table->timestamps(); 29 | }); 30 | 31 | } 32 | 33 | /** 34 | * Reverse the migrations. 35 | * 36 | * @return void 37 | */ 38 | public function down() 39 | { 40 | $table = config("laravel_user_management.users_table"); 41 | Schema::dropIfExists('users'); 42 | } 43 | 44 | private function createTable(array $data) 45 | { 46 | foreach($data as $item) 47 | { 48 | 49 | 50 | } 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /src/Database/Migrations/2019_01_01_222222_create_departments_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 20 | $table->string('title')->unique(); 21 | $table->unsignedInteger('parent_id')->nullable(); 22 | $table->timestamps(); 23 | 24 | $table->foreign('parent_id') 25 | ->references('id') 26 | ->on($table) 27 | ->onUpdate('CASCADE') 28 | ->onDelete('CASCADE'); 29 | 30 | 31 | }); 32 | } 33 | 34 | /** 35 | * Reverse the migrations. 36 | * 37 | * @return void 38 | */ 39 | public function down() 40 | { 41 | $table = config("laravel_user_management.user_department_table"); 42 | Schema::dropIfExists($table); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/Database/Migrations/2019_01_01_333333_create_user_department_users_table.php: -------------------------------------------------------------------------------- 1 | unsignedInteger('user_id'); 23 | $table->unsignedInteger('department_id'); 24 | 25 | $table->foreign('department_id') 26 | ->references('id') 27 | ->on($departments_table) 28 | ->onUpdate('CASCADE') 29 | ->onDelete('CASCADE'); 30 | 31 | $table->foreign('user_id') 32 | ->references('id') 33 | ->on($users_table) 34 | ->onUpdate('CASCADE') 35 | ->onDelete('CASCADE'); 36 | }); 37 | } 38 | 39 | /** 40 | * Reverse the migrations. 41 | * 42 | * @return void 43 | */ 44 | public function down() 45 | { 46 | $table = config("laravel_user_management.user_department_user_table"); 47 | Schema::dropIfExists($table); 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /src/Database/Migrations/2019_02_02_555555_create_soft-delete_users_table.php: -------------------------------------------------------------------------------- 1 | softDeletes(); 20 | $table->dropColumn('status'); 21 | }); 22 | 23 | Schema::table($table, function (Blueprint $table) { 24 | $table->enum('status',['pending','accepted','blocked','deleted'])->default('pending'); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | * 31 | * @return void 32 | */ 33 | public function down() 34 | { 35 | $table = config("laravel_user_management.users_table"); 36 | 37 | Schema::table($table, function (Blueprint $table) { 38 | $table->dropColumn('deleted_at'); 39 | $table->dropColumn('status'); 40 | }); 41 | 42 | Schema::table($table, function (Blueprint $table) { 43 | $table->enum('status',['pending','accepted','blocked'])->default('pending'); 44 | }); 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/Database/Migrations/2019_10_17_110654_create_password_reset_table.php: -------------------------------------------------------------------------------- 1 | string('email')->index(); 20 | $table->string('token'); 21 | $table->timestamp('created_at')->nullable(); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | * 28 | * @return void 29 | */ 30 | public function down() 31 | { 32 | $table = config("laravel_user_management.password_resets_table"); 33 | 34 | Schema::dropIfExists($table); 35 | } 36 | 37 | } 38 | -------------------------------------------------------------------------------- /src/Database/Seeders/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Database/Seeders/.gitkeep -------------------------------------------------------------------------------- /src/Database/Seeders/Department/DepartmentTableSeeder.php: -------------------------------------------------------------------------------- 1 | "Clients", 10 | 'parent' => '', 11 | ], 12 | 13 | ]; 14 | 15 | 16 | } 17 | -------------------------------------------------------------------------------- /src/Database/Seeders/Department/MasterDepartmentTableSeeder.php: -------------------------------------------------------------------------------- 1 | departmentRepository = $repository; 17 | } 18 | 19 | protected function getDepartments() 20 | { 21 | return $this->departments; 22 | } 23 | 24 | /** 25 | * Run the database seeds. 26 | * 27 | * @return void 28 | */ 29 | public function run() 30 | { 31 | Model::unguard(); 32 | 33 | $this->command->info('============================================================='); 34 | $this->command->info(' USER MODULE: INSERT DEPARTMENTS DATA'); 35 | $this->command->info('============================================================='); 36 | $this->command->info("\n"); 37 | 38 | foreach ($this->getDepartments() as $item) 39 | { 40 | $parent = null; 41 | if($item['parent'] != null) 42 | { 43 | $parent = $this->departmentRepository->findBy([ 44 | 'title' => $item['title'], 45 | ])->id; 46 | } 47 | 48 | $findDepartment = $this->departmentRepository->findBy([ 49 | 'title' => $item['title'], 50 | 'parent_id' => $parent 51 | ]); 52 | 53 | if ($findDepartment) 54 | { 55 | $this->command->info('THIS DEPARTMENT << ' . $item['title'] . '] >> EXISTED! UPDATING DATA ...'); 56 | 57 | $this->departmentRepository->update($findDepartment->id,[ 58 | 'title' => $item['title'], 59 | 'parent_id' => $parent, 60 | ]); 61 | 62 | continue; 63 | } 64 | 65 | $this->command->info('CREATING THIS DEPARTMENT <<' . $item['title'] . '] >> ...'); 66 | 67 | $this->departmentRepository->store([ 68 | 'title' => $item['title'], 69 | 'parent_id' => $parent, 70 | ]); 71 | 72 | } 73 | 74 | $this->command->info("\n"); 75 | $this->command->info('============================================================='); 76 | $this->command->info(' INSERTING DEPARTMENTS DATA FINALIZED!'); 77 | $this->command->info('============================================================='); 78 | $this->command->info("\n"); 79 | 80 | } 81 | 82 | } 83 | -------------------------------------------------------------------------------- /src/Database/Seeders/Permission/PermissionTableSeeder.php: -------------------------------------------------------------------------------- 1 | 'admin.manager', 10 | 'title' => 'Admin Panel', 11 | 'guard_name' => 'web', 12 | 'description' => 'This permission is for access to admin panel.', 13 | 'module' => 'User', 14 | 'roles' => [ 15 | 'Admin', 16 | ], 17 | ], 18 | ]; 19 | 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/Database/Seeders/Role/MasterRoleTableSeeder.php: -------------------------------------------------------------------------------- 1 | roleRepository = $repository; 17 | } 18 | 19 | protected function getRoles() 20 | { 21 | return $this->roles; 22 | } 23 | 24 | /** 25 | * Run the database seeds. 26 | * 27 | * @return void 28 | */ 29 | public function run() 30 | { 31 | Model::unguard(); 32 | 33 | $this->command->info('============================================================='); 34 | $this->command->info(' USER MODULE: INSERT ROLES DATA'); 35 | $this->command->info('============================================================='); 36 | $this->command->info("\n"); 37 | 38 | foreach ($this->getRoles() as $role) 39 | { 40 | $findRole = $this->roleRepository->findBy([ 41 | 'name' => $role['name'], 42 | 'guard_name' => $role['guard_name'] 43 | ]); 44 | 45 | if ($findRole) 46 | { 47 | $this->command->info('THIS ROLE << ' . $role['name'] .'['. $role['guard_name'] . '] >> EXISTED! UPDATING DATA ...'); 48 | 49 | $this->roleRepository->update($findRole->id,[ 50 | 'name' => $role['name'], 51 | 'title' => $role['title'], 52 | 'guard_name' => $role['guard_name'], 53 | 'description' => isset($role['description']) ? $role['description'] : null, 54 | ]); 55 | 56 | continue; 57 | } 58 | 59 | $this->command->info('CREATING THIS ROLE <<' . $role['name'] .'['. $role['guard_name'] . '] >> ...'); 60 | 61 | $this->roleRepository->store([ 62 | 'name' => $role['name'], 63 | 'title' => $role['title'], 64 | 'guard_name' => $role['guard_name'], 65 | 'description' => isset($role['description']) ? $role['description'] : null, 66 | ]); 67 | 68 | } 69 | 70 | $this->command->info("\n"); 71 | $this->command->info('============================================================='); 72 | $this->command->info(' INSERTING ROLES FINALIZED!'); 73 | $this->command->info('============================================================='); 74 | $this->command->info("\n"); 75 | 76 | } 77 | 78 | } 79 | -------------------------------------------------------------------------------- /src/Database/Seeders/Role/RoleTableSeeder.php: -------------------------------------------------------------------------------- 1 | "Admin", 9 | 'title' => "Administrator", 10 | 'guard_name' => "web", 11 | 'description' => "This role will assign to Administrator", 12 | ], 13 | [ 14 | 'name' => "User", 15 | 'title' => "User", 16 | 'guard_name' => "web", 17 | 'description' => "This role will assign to user.", 18 | ], 19 | 20 | ]; 21 | 22 | 23 | } 24 | -------------------------------------------------------------------------------- /src/Database/Seeders/UserManagementDatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | setTable(config("laravel_user_management.user_department_table")); 14 | } 15 | 16 | protected $fillable = [ 17 | 'title', 18 | 'parent_id', 19 | ]; 20 | 21 | public function user() 22 | { 23 | return $this->hasMany(User::class); 24 | } 25 | 26 | public function parent() 27 | { 28 | return $this->hasOne(Department::class, 'parent_id', 'id'); 29 | } 30 | 31 | public function children() 32 | { 33 | return $this->belongsTo(Department::class,'parent_id','id'); 34 | } 35 | 36 | public function users() 37 | { 38 | $table = config("laravel_user_management.user_department_user_table"); 39 | 40 | return $this->belongsToMany( 41 | User::class, 42 | $table, 43 | 'department_id', 44 | 'user_id' 45 | ); 46 | } 47 | 48 | } 49 | -------------------------------------------------------------------------------- /src/Entities/Permission.php: -------------------------------------------------------------------------------- 1 | attributes['password'] = bcrypt($password); 34 | } 35 | 36 | public function __construct(array $attributes = []) 37 | { 38 | parent::__construct($attributes); 39 | 40 | $this->setTable(config("laravel_user_management.users_table")); 41 | } 42 | 43 | public function departments() 44 | { 45 | $table = config("laravel_user_management.user_department_user_table"); 46 | 47 | return $this->belongsToMany( 48 | Department::class, 49 | $table, 50 | 'user_id', 51 | 'department_id' 52 | ); 53 | } 54 | 55 | } -------------------------------------------------------------------------------- /src/Entities/export/Department.php: -------------------------------------------------------------------------------- 1 | attributes['password'] = bcrypt($password); 26 | // } 27 | 28 | } -------------------------------------------------------------------------------- /src/Facade/UserManagement.php: -------------------------------------------------------------------------------- 1 | userRepository = $user; 24 | $this->roleRepository = $role; 25 | } 26 | 27 | public function loginForm() 28 | { 29 | return view('user-management.auth.login'); 30 | } 31 | 32 | public function registerForm() 33 | { 34 | return view('user-management.auth.register'); 35 | } 36 | 37 | public function login(UserLogin $request) 38 | { 39 | 40 | $username = config('laravel_user_management.auth.username'); 41 | $credentials = [$username => $request->{$username}, 'password' => $request->password, 'status' => 'accepted']; 42 | 43 | if (\Auth::attempt($credentials)) 44 | { 45 | $user = \Auth::user(); 46 | return redirect()->intended('/'); 47 | } 48 | 49 | $user = $this->userRepository->findBy(["$username" => $request->{$username}]); 50 | if($user && $user->status != 'accepted') 51 | { 52 | return redirect()->back()->with('message',[ 53 | 'type' => 'danger', 54 | 'text' => trans('trans.your_account_does_not_activated') 55 | ]); 56 | } 57 | 58 | return redirect()->back()->with('message',[ 59 | 'type' => 'danger', 60 | 'text' => trans('trans.username_or_password_wrong') 61 | ]); 62 | 63 | } 64 | 65 | public function register(UserRegistration $request) 66 | { 67 | $userDefaultRole = $this->roleRepository->findBy([ 68 | 'name' => config('laravel_user_management.auth.user_default_role') 69 | ]); 70 | 71 | if (!$userDefaultRole) 72 | { 73 | return redirect()->back()->with('message',[ 74 | 'type' => 'danger', 75 | 'text' => trans('trans.default_role_does_not_exist'), 76 | ]); 77 | } 78 | 79 | //// FOR ACTIVE ACCOUNT BASE PROJECT CONFIG ONE OF THE FIELDS [MOBILE, EMAIL] SHOULD BE REQUIRED 80 | $user = $this->userRepository->store([ 81 | 'first_name' => $request->first_name, 82 | 'last_name' => $request->last_name, 83 | 'email' => $request->email, 84 | 'password' => $request->password, 85 | 'mobile' => $request->mobile, 86 | 'status' => config('laravel_user_management.auth.default_user_status'), 87 | ]); 88 | 89 | /// ASSIGN DEFAULT ROLE TO USER 90 | $this->roleRepository->setRoleToMember($user, $userDefaultRole); 91 | 92 | \Auth::login($user); 93 | 94 | return redirect()->route(config('laravel_user_management.auth.dashboard_route_name_user_redirection')) 95 | ->with('message',[ 96 | 'type' => 'success', 97 | 'text' => trans('trans.account_created_successfully') 98 | ]); 99 | 100 | } 101 | 102 | public function logout(Request $request) 103 | { 104 | Auth::logout(); 105 | return redirect('/'); 106 | } 107 | 108 | 109 | } 110 | -------------------------------------------------------------------------------- /src/Http/Controllers/Auth/export/AuthController.php: -------------------------------------------------------------------------------- 1 | "required|unique:$table,title", 29 | 'parent_id' => "nullable|numeric|exists:$table,id" 30 | ]; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Http/Requests/Admin/StorePermission.php: -------------------------------------------------------------------------------- 1 | 'required|unique:'. $tableNames['permissions'], 30 | 'title' => 'required|string', 31 | 'module' => 'nullable', 32 | 'guard_name' => 'nullable', 33 | 'description' => 'nullable', 34 | ]; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Http/Requests/Admin/StoreRole.php: -------------------------------------------------------------------------------- 1 | "required|unique:".$tableNames['roles'].",name", 30 | 'title' => 'required|string', 31 | 'guard_name' => 'nullable', 32 | 'description' => 'nullable', 33 | 'permissions' => 'nullable|array', 34 | 'permissions.*' => 'nullable|exists:'. $tableNames['permissions']. ',name', 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Http/Requests/Admin/StoreUser.php: -------------------------------------------------------------------------------- 1 | 'required|string', 32 | 'last_name' => 'required|string', 33 | 'email' => "nullable|email|unique:$userTable,email", 34 | 'mobile' => "required|unique:$userTable,mobile", 35 | 'password' => 'required|min:6', 36 | 'roles' => 'nullable|array', 37 | 'roles.*' => 'nullable|exists:'. $tableNames['roles']. ',name', 38 | 'departments' => 'nullable|array', 39 | 'departments.*' => "nullable|exists:$departmentTable,id", 40 | ]; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/Http/Requests/Admin/UpdateDepartment.php: -------------------------------------------------------------------------------- 1 | "required|unique:$table,title,". $this->ID, 29 | 'parent_id' => "nullable|numeric|exists:$table,id" 30 | ]; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /src/Http/Requests/Admin/UpdatePermission.php: -------------------------------------------------------------------------------- 1 | 'required|unique:'. $tableNames['permissions'] .',name,' . $this->ID, 30 | 'title' => 'required|string', 31 | 'module' => 'nullable', 32 | 'guard_name' => 'nullable', 33 | 'description' => 'nullable', 34 | ]; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Http/Requests/Admin/UpdateRole.php: -------------------------------------------------------------------------------- 1 | "required|unique:".$tableNames['roles'].",name," . $this->ID, 30 | 'title' => 'required|string', 31 | 'guard_name' => 'nullable', 32 | 'description' => 'nullable', 33 | 'permissions' => 'nullable|array', 34 | 'permissions.*' => 'nullable|exists:'. $tableNames['permissions']. ',name', 35 | ]; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Http/Requests/Admin/UpdateUser.php: -------------------------------------------------------------------------------- 1 | 'required|string', 32 | 'last_name' => 'required|string', 33 | 'email' => "nullable|email|unique:$userTable,email," . $this->ID, 34 | 'mobile' => "required|unique:$userTable,mobile," . $this->ID, 35 | 'password' => 'nullable|min:6', 36 | 'roles' => 'nullable|array', 37 | 'roles.*' => 'nullable|exists:'. $tableNames['roles']. ',name', 38 | 'departments' => 'nullable|array', 39 | 'departments.*' => "nullable|exists:$departmentTable,id", 40 | ]; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/Http/Requests/Auth/UserLogin.php: -------------------------------------------------------------------------------- 1 | "required" . ($username == 'mobile' ? '|numeric' : '|email'), 30 | 'password' => 'required', 31 | ]; 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /src/Http/Requests/Auth/UserRegistration.php: -------------------------------------------------------------------------------- 1 | 'required|string', 31 | 'last_name' => 'required|string', 32 | "$username" => "required" . ($username == 'mobile' ? "|unique:$userTable,mobile" : "|email|unique:$userTable,email"), 33 | 'password' => 'required|confirmed|min:6', 34 | ]; 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Bold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Bold.eot -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Bold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Bold.ttf -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Bold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Bold.woff -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Bold.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Bold.woff2 -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Light.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Light.eot -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Light.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Light.ttf -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Light.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Light.woff -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Light.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Light.woff2 -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Medium.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Medium.eot -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Medium.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Medium.ttf -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Medium.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Medium.woff -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Medium.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Medium.woff2 -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Regular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Regular.eot -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Regular.ttf -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Regular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Regular.woff -------------------------------------------------------------------------------- /src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Regular.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/fonts/Ubuntu/Ubuntu-Regular.woff2 -------------------------------------------------------------------------------- /src/Public/mekaeils-package/images/admin-panel.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/images/admin-panel.jpg -------------------------------------------------------------------------------- /src/Public/mekaeils-package/images/create-user.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/images/create-user.jpg -------------------------------------------------------------------------------- /src/Public/mekaeils-package/images/login-register.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/images/login-register.jpg -------------------------------------------------------------------------------- /src/Public/mekaeils-package/images/logo-notification.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/images/logo-notification.jpg -------------------------------------------------------------------------------- /src/Public/mekaeils-package/images/logo-translation.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/images/logo-translation.jpg -------------------------------------------------------------------------------- /src/Public/mekaeils-package/images/logo-user-management.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/images/logo-user-management.jpg -------------------------------------------------------------------------------- /src/Public/mekaeils-package/images/vuejs/home.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/images/vuejs/home.jpg -------------------------------------------------------------------------------- /src/Public/mekaeils-package/images/vuejs/login.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/images/vuejs/login.jpg -------------------------------------------------------------------------------- /src/Public/mekaeils-package/images/vuejs/meterialKit.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/images/vuejs/meterialKit.jpg -------------------------------------------------------------------------------- /src/Public/mekaeils-package/images/vuejs/register.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/images/vuejs/register.jpg -------------------------------------------------------------------------------- /src/Public/mekaeils-package/js/misc.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | $(function() { 4 | var body = $('body'); 5 | var contentWrapper = $('.content-wrapper'); 6 | var scroller = $('.container-scroller'); 7 | var footer = $('.footer'); 8 | var sidebar = $('.sidebar'); 9 | 10 | //Add active class to nav-link based on url dynamically 11 | //Active class can be hard coded directly in html file also as required 12 | var current = location.pathname.split("/").slice(-1)[0].replace(/^\/|\/$/g, ''); 13 | $('.nav li a', sidebar).each(function() { 14 | var $this = $(this); 15 | if (current === "") { 16 | //for root url 17 | if ($this.attr('href').indexOf("index.html") !== -1) { 18 | $(this).parents('.nav-item').last().addClass('active'); 19 | if ($(this).parents('.sub-menu').length) { 20 | $(this).closest('.collapse').addClass('show'); 21 | $(this).addClass('active'); 22 | } 23 | } 24 | } else { 25 | //for other url 26 | if ($this.attr('href').indexOf(current) !== -1) { 27 | $(this).parents('.nav-item').last().addClass('active'); 28 | if ($(this).parents('.sub-menu').length) { 29 | $(this).closest('.collapse').addClass('show'); 30 | $(this).addClass('active'); 31 | } 32 | } 33 | } 34 | }) 35 | 36 | //Close other submenu in sidebar on opening any 37 | 38 | sidebar.on('show.bs.collapse', '.collapse', function() { 39 | sidebar.find('.collapse.show').collapse('hide'); 40 | }); 41 | 42 | 43 | //Change sidebar and content-wrapper height 44 | applyStyles(); 45 | 46 | function applyStyles() { 47 | //Applying perfect scrollbar 48 | if (!body.hasClass("rtl")) { 49 | if ($('.tab-content .tab-pane.scroll-wrapper').length) { 50 | const settingsPanelScroll = new PerfectScrollbar('.settings-panel .tab-content .tab-pane.scroll-wrapper'); 51 | } 52 | if ($('.chats').length) { 53 | const chatsScroll = new PerfectScrollbar('.chats'); 54 | } 55 | } 56 | } 57 | 58 | //checkbox and radios 59 | $(".form-check label,.form-radio label").append(''); 60 | 61 | //fullscreen 62 | $("#fullscreen-button").on("click", function toggleFullScreen() { 63 | if ((document.fullScreenElement !== undefined && document.fullScreenElement === null) || (document.msFullscreenElement !== undefined && document.msFullscreenElement === null) || (document.mozFullScreen !== undefined && !document.mozFullScreen) || (document.webkitIsFullScreen !== undefined && !document.webkitIsFullScreen)) { 64 | if (document.documentElement.requestFullScreen) { 65 | document.documentElement.requestFullScreen(); 66 | } else if (document.documentElement.mozRequestFullScreen) { 67 | document.documentElement.mozRequestFullScreen(); 68 | } else if (document.documentElement.webkitRequestFullScreen) { 69 | document.documentElement.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT); 70 | } else if (document.documentElement.msRequestFullscreen) { 71 | document.documentElement.msRequestFullscreen(); 72 | } 73 | } else { 74 | if (document.cancelFullScreen) { 75 | document.cancelFullScreen(); 76 | } else if (document.mozCancelFullScreen) { 77 | document.mozCancelFullScreen(); 78 | } else if (document.webkitCancelFullScreen) { 79 | document.webkitCancelFullScreen(); 80 | } else if (document.msExitFullscreen) { 81 | document.msExitFullscreen(); 82 | } 83 | } 84 | }) 85 | }); 86 | })(jQuery); -------------------------------------------------------------------------------- /src/Public/mekaeils-package/js/off-canvas.js: -------------------------------------------------------------------------------- 1 | (function($) { 2 | 'use strict'; 3 | $(function() { 4 | $('[data-toggle="offcanvas"]').on("click", function() { 5 | $('.sidebar-offcanvas').toggleClass('active') 6 | }); 7 | }); 8 | })(jQuery); -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/css/vendor.bundle.base.css: -------------------------------------------------------------------------------- 1 | /* 2 | * Container style 3 | */ 4 | .ps { 5 | overflow: hidden !important; 6 | overflow-anchor: none; 7 | -ms-overflow-style: none; 8 | touch-action: auto; 9 | -ms-touch-action: auto; 10 | } 11 | 12 | /* 13 | * Scrollbar rail styles 14 | */ 15 | .ps__rail-x { 16 | display: none; 17 | opacity: 0; 18 | transition: background-color .2s linear, opacity .2s linear; 19 | -webkit-transition: background-color .2s linear, opacity .2s linear; 20 | height: 15px; 21 | /* there must be 'bottom' or 'top' for ps__rail-x */ 22 | bottom: 0px; 23 | /* please don't change 'position' */ 24 | position: absolute; 25 | } 26 | 27 | .ps__rail-y { 28 | display: none; 29 | opacity: 0; 30 | transition: background-color .2s linear, opacity .2s linear; 31 | -webkit-transition: background-color .2s linear, opacity .2s linear; 32 | width: 15px; 33 | /* there must be 'right' or 'left' for ps__rail-y */ 34 | right: 0; 35 | /* please don't change 'position' */ 36 | position: absolute; 37 | } 38 | 39 | .ps--active-x > .ps__rail-x, 40 | .ps--active-y > .ps__rail-y { 41 | display: block; 42 | background-color: transparent; 43 | } 44 | 45 | .ps:hover > .ps__rail-x, 46 | .ps:hover > .ps__rail-y, 47 | .ps--focus > .ps__rail-x, 48 | .ps--focus > .ps__rail-y, 49 | .ps--scrolling-x > .ps__rail-x, 50 | .ps--scrolling-y > .ps__rail-y { 51 | opacity: 0.6; 52 | } 53 | 54 | .ps__rail-x:hover, 55 | .ps__rail-y:hover, 56 | .ps__rail-x:focus, 57 | .ps__rail-y:focus { 58 | background-color: #eee; 59 | opacity: 0.9; 60 | } 61 | 62 | /* 63 | * Scrollbar thumb styles 64 | */ 65 | .ps__thumb-x { 66 | background-color: #aaa; 67 | border-radius: 6px; 68 | transition: background-color .2s linear, height .2s ease-in-out; 69 | -webkit-transition: background-color .2s linear, height .2s ease-in-out; 70 | height: 6px; 71 | /* there must be 'bottom' for ps__thumb-x */ 72 | bottom: 2px; 73 | /* please don't change 'position' */ 74 | position: absolute; 75 | } 76 | 77 | .ps__thumb-y { 78 | background-color: #aaa; 79 | border-radius: 6px; 80 | transition: background-color .2s linear, width .2s ease-in-out; 81 | -webkit-transition: background-color .2s linear, width .2s ease-in-out; 82 | width: 6px; 83 | /* there must be 'right' for ps__thumb-y */ 84 | right: 2px; 85 | /* please don't change 'position' */ 86 | position: absolute; 87 | } 88 | 89 | .ps__rail-x:hover > .ps__thumb-x, 90 | .ps__rail-x:focus > .ps__thumb-x { 91 | background-color: #999; 92 | height: 11px; 93 | } 94 | 95 | .ps__rail-y:hover > .ps__thumb-y, 96 | .ps__rail-y:focus > .ps__thumb-y { 97 | background-color: #999; 98 | width: 11px; 99 | } 100 | 101 | /* MS supports */ 102 | @supports (-ms-overflow-style: none) { 103 | .ps { 104 | overflow: auto !important; 105 | } 106 | } 107 | 108 | @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) { 109 | .ps { 110 | overflow: auto !important; 111 | } 112 | } 113 | -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/README.md: -------------------------------------------------------------------------------- 1 | # MaterialDesign-Webfont 2 | NPM/Bower Dist for Material Design Webfont. This includes the Stock and Community icons in a single webfont collection. 3 | 4 | ## Learn More 5 | 6 | https://github.com/Templarian/MaterialDesign 7 | -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/bower.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mdi", 3 | "version": "2.1.19", 4 | "main": [ 5 | "scss/materialdesignicons.scss" 6 | ], 7 | "homepage": "http://materialdesignicons.com", 8 | "authors": [ 9 | { "name": "Austin Andrews", "homepage": "http://templarian.com" }, 10 | { "name": "Google", "homepage": "http://www.google.com/design" } 11 | ], 12 | "license": ["OFL-1.1", "MIT"], 13 | "ignore": [ 14 | "*.md", 15 | "*.json" 16 | ], 17 | "keywords": [ 18 | "material", 19 | "design", 20 | "icons", 21 | "webfont" 22 | ] 23 | } 24 | -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/fonts/materialdesignicons-webfont.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/vendors/iconfonts/mdi/fonts/materialdesignicons-webfont.eot -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/fonts/materialdesignicons-webfont.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/vendors/iconfonts/mdi/fonts/materialdesignicons-webfont.ttf -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/fonts/materialdesignicons-webfont.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/vendors/iconfonts/mdi/fonts/materialdesignicons-webfont.woff -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/fonts/materialdesignicons-webfont.woff2: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Public/mekaeils-package/vendors/iconfonts/mdi/fonts/materialdesignicons-webfont.woff2 -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "_args": [ 3 | [ 4 | "mdi@2.1.19", 5 | "/Users/linsa/project/purple_free" 6 | ] 7 | ], 8 | "_from": "mdi@2.1.19", 9 | "_id": "mdi@2.1.19", 10 | "_inBundle": false, 11 | "_integrity": "sha512-WErwab4jq/jcCeo4aecQ5UH1WXu2Eto5Rdb0AiBFcUw8CHmF/UeV+hf9wKyH17X+c3Z+jaS3jDKW7fu0R0HmWQ==", 12 | "_location": "/mdi", 13 | "_phantomChildren": {}, 14 | "_requested": { 15 | "type": "version", 16 | "registry": true, 17 | "raw": "mdi@2.1.19", 18 | "name": "mdi", 19 | "escapedName": "mdi", 20 | "rawSpec": "2.1.19", 21 | "saveSpec": null, 22 | "fetchSpec": "2.1.19" 23 | }, 24 | "_requiredBy": [ 25 | "/" 26 | ], 27 | "_resolved": "https://registry.npmjs.org/mdi/-/mdi-2.1.19.tgz", 28 | "_spec": "2.1.19", 29 | "_where": "/Users/linsa/project/purple_free", 30 | "author": { 31 | "name": "Austin Andrews", 32 | "url": "http://twitter.com/templarian" 33 | }, 34 | "bugs": { 35 | "url": "https://github.com/Templarian/MaterialDesign/issues" 36 | }, 37 | "description": "Dist for Material Design Webfont. This includes the Stock and Community icons in a single webfont collection.", 38 | "homepage": "http://materialdesignicons.com", 39 | "keywords": [ 40 | "material", 41 | "design", 42 | "icons", 43 | "webfont" 44 | ], 45 | "licenses": [ 46 | { 47 | "type": "OFL-1.1", 48 | "url": "http://scripts.sil.org/OFL" 49 | }, 50 | { 51 | "type": "MIT", 52 | "url": "http://opensource.org/licenses/mit-license.html" 53 | } 54 | ], 55 | "main": "preview.html", 56 | "name": "mdi", 57 | "repository": { 58 | "type": "git", 59 | "url": "git+https://github.com/Templarian/MaterialDesign-Webfont.git" 60 | }, 61 | "scripts": { 62 | "test": "echo \"Error: no test specified\" && exit 1" 63 | }, 64 | "style": "css/materialdesignicons.css", 65 | "version": "2.1.19" 66 | } 67 | -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/scss/_animated.scss: -------------------------------------------------------------------------------- 1 | // From Font Awesome 2 | .#{$mdi-css-prefix}-spin:before { 3 | -webkit-animation: #{$mdi-css-prefix}-spin 2s infinite linear; 4 | animation: #{$mdi-css-prefix}-spin 2s infinite linear; 5 | } 6 | 7 | @-webkit-keyframes #{$mdi-css-prefix}-spin { 8 | 0% { 9 | -webkit-transform: rotate(0deg); 10 | transform: rotate(0deg); 11 | } 12 | 100% { 13 | -webkit-transform: rotate(359deg); 14 | transform: rotate(359deg); 15 | } 16 | } 17 | 18 | @keyframes #{$mdi-css-prefix}-spin { 19 | 0% { 20 | -webkit-transform: rotate(0deg); 21 | transform: rotate(0deg); 22 | } 23 | 100% { 24 | -webkit-transform: rotate(359deg); 25 | transform: rotate(359deg); 26 | } 27 | } -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/scss/_core.scss: -------------------------------------------------------------------------------- 1 | .#{$mdi-css-prefix}:before, 2 | .#{$mdi-css-prefix}-set { 3 | display: inline-block; 4 | font: normal normal normal #{$mdi-font-size-base}/1 '#{$mdi-font-name}'; // shortening font declaration 5 | font-size: inherit; // can't have font-size inherit on line above, so need to override 6 | text-rendering: auto; // optimizelegibility throws things off #1094 7 | line-height: inherit; 8 | -webkit-font-smoothing: antialiased; 9 | -moz-osx-font-smoothing: grayscale; 10 | } -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/scss/_extras.scss: -------------------------------------------------------------------------------- 1 | $sizes: 18 24 36 48; 2 | @each $size in $sizes { 3 | .#{$mdi-css-prefix}-#{$size}px { 4 | &.#{$mdi-css-prefix}-set, 5 | &.#{$mdi-css-prefix}:before { 6 | font-size: $size * 1px; 7 | } 8 | } 9 | } 10 | 11 | .#{$mdi-css-prefix}-dark { 12 | &:before { 13 | color: rgba(0, 0, 0, 0.54); 14 | } 15 | &.mdi-inactive:before { 16 | color: rgba(0, 0, 0, 0.26); 17 | } 18 | } 19 | .#{$mdi-css-prefix}-light { 20 | &:before { 21 | color: rgba(255, 255, 255, 1); 22 | } 23 | &.mdi-inactive:before { 24 | color: rgba(255, 255, 255, 0.3); 25 | } 26 | } 27 | 28 | $degrees: 45 90 135 180 225 270 315; 29 | @each $degree in $degrees { 30 | .#{$mdi-css-prefix}-rotate-#{$degree}{ 31 | &:before { 32 | -webkit-transform: rotate(#{$degree}deg); 33 | -ms-transform: rotate(#{$degree}deg); 34 | transform: rotate(#{$degree}deg); 35 | } 36 | /* 37 | // Not included in production 38 | &.#{$mdi-css-prefix}-flip-h:before { 39 | -webkit-transform: scaleX(-1) rotate(#{$degree}deg); 40 | transform: scaleX(-1) rotate(#{$degree}deg); 41 | filter: FlipH; 42 | -ms-filter: "FlipH"; 43 | } 44 | &.#{$mdi-css-prefix}-flip-v:before { 45 | -webkit-transform: scaleY(-1) rotate(#{$degree}deg); 46 | -ms-transform: rotate(#{$degree}deg); 47 | transform: scaleY(-1) rotate(#{$degree}deg); 48 | filter: FlipV; 49 | -ms-filter: "FlipV"; 50 | } 51 | */ 52 | } 53 | } 54 | .#{$mdi-css-prefix}-flip-h:before { 55 | -webkit-transform: scaleX(-1); 56 | transform: scaleX(-1); 57 | filter: FlipH; 58 | -ms-filter: "FlipH"; 59 | } 60 | .#{$mdi-css-prefix}-flip-v:before { 61 | -webkit-transform: scaleY(-1); 62 | transform: scaleY(-1); 63 | filter: FlipV; 64 | -ms-filter: "FlipV"; 65 | } -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/scss/_functions.scss: -------------------------------------------------------------------------------- 1 | @function char($character-code) { 2 | @if function-exists("selector-append") { 3 | @return unquote("\"\\#{$character-code}\""); 4 | } 5 | 6 | @if "\\#{'x'}" == "\\x" { 7 | @return str-slice("\x", 1, 1) + $character-code; 8 | } 9 | @else { 10 | @return #{"\"\\"}#{$character-code + "\""}; 11 | } 12 | } 13 | 14 | @function mdi($name) { 15 | @if map-has-key($mdi-icons, $name) == false { 16 | @warn "Icon #{$name} not found."; 17 | @return ""; 18 | } 19 | @return char(map-get($mdi-icons, $name)); 20 | } -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/scss/_icons.scss: -------------------------------------------------------------------------------- 1 | @each $key, $value in $mdi-icons { 2 | .#{$mdi-css-prefix}-#{$key}:before { 3 | content: char($value); 4 | } 5 | } 6 | 7 | .#{$mdi-css-prefix}-blank:before { 8 | content: "\F68C"; 9 | visibility: hidden; 10 | } -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/scss/_path.scss: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: '#{$mdi-font-name}'; 3 | src: url('#{$mdi-font-path}/#{$mdi-filename}-webfont.eot?v=#{$mdi-version}'); 4 | src: url('#{$mdi-font-path}/#{$mdi-filename}-webfont.eot?#iefix&v=#{$mdi-version}') format('embedded-opentype'), 5 | url('#{$mdi-font-path}/#{$mdi-filename}-webfont.woff2?v=#{$mdi-version}') format('woff2'), 6 | url('#{$mdi-font-path}/#{$mdi-filename}-webfont.woff?v=#{$mdi-version}') format('woff'), 7 | url('#{$mdi-font-path}/#{$mdi-filename}-webfont.ttf?v=#{$mdi-version}') format('truetype'), 8 | url('#{$mdi-font-path}/#{$mdi-filename}-webfont.svg?v=#{$mdi-version}##{$mdi-filename}#{$mdi-font-weight}') format('svg'); 9 | font-weight: normal; 10 | font-style: normal; 11 | } 12 | -------------------------------------------------------------------------------- /src/Public/mekaeils-package/vendors/iconfonts/mdi/scss/materialdesignicons.scss: -------------------------------------------------------------------------------- 1 | /* MaterialDesignIcons.com */ 2 | @import "variables"; 3 | @import "functions"; 4 | @import "path"; 5 | @import "core"; 6 | @import "icons"; 7 | @import "extras"; 8 | @import "animated"; -------------------------------------------------------------------------------- /src/Repository/Contracts/BaseRepositoryInterface.php: -------------------------------------------------------------------------------- 1 | model::query(); 14 | 15 | if (!empty($relations)) 16 | { 17 | $query->with($relations); 18 | } 19 | 20 | if (!empty($columns)) 21 | { 22 | return $query->get($columns); 23 | } 24 | 25 | if(! empty($pluck)) 26 | { 27 | return $query->get()->{$pluck['method']}($pluck['first'],$pluck['second'])->toArray(); 28 | } 29 | 30 | return $query->get(); 31 | } 32 | 33 | public function find(int $ID, array $columns = null) 34 | { 35 | return $this->model::find($ID); 36 | } 37 | 38 | public function store(array $item) 39 | { 40 | return $this->model::create($item); 41 | } 42 | 43 | public function update(int $ID, array $data) 44 | { 45 | $item = $this->find($ID); 46 | 47 | if ($item) 48 | { 49 | return $item->update($data); 50 | } 51 | 52 | return null; 53 | } 54 | 55 | public function delete(int $ID) 56 | { 57 | if (intval($ID) > 0) 58 | { 59 | return $this->model::destroy($ID); 60 | } 61 | 62 | return null; 63 | } 64 | 65 | public function findBy(array $criteria, array $columns = [], bool $single = true) 66 | { 67 | $query = $this->model::query(); 68 | 69 | foreach ($criteria as $key => $item) 70 | { 71 | $query->where($key, $item); 72 | } 73 | 74 | $method = $single ? 'first' : 'get'; 75 | 76 | return empty($columns) ? $query->{$method}() : $query->{$method}($columns); 77 | } 78 | 79 | public function updateBy(array $criteria, array $data) 80 | { 81 | $query = $this->model::query(); 82 | 83 | foreach ($criteria as $key => $value) 84 | { 85 | $query->where($key, $value); 86 | } 87 | 88 | return $query->update($data); 89 | } 90 | 91 | public function paginate($perPage = null, $columns = ['*'], $pageName = 'page', $page = null) 92 | { 93 | $query = $this->model::query(); 94 | return $query->paginate($perPage, $columns, $pageName, $page); 95 | } 96 | 97 | } 98 | -------------------------------------------------------------------------------- /src/Repository/Eloquents/DepartmentRepository.php: -------------------------------------------------------------------------------- 1 | departments()->sync($departments, true); 16 | } 17 | 18 | public function attachDepartment($owner, array $departments=[]) 19 | { 20 | return $owner->departments()->attach($departments); 21 | } 22 | 23 | 24 | } -------------------------------------------------------------------------------- /src/Repository/Eloquents/PermissionRepository.php: -------------------------------------------------------------------------------- 1 | roleModel::query(); 17 | $role = $query->find($roleID); 18 | 19 | if ($give) 20 | { 21 | return $role->givePermissionTo($permission); 22 | } 23 | 24 | return $role->revokePermissionTo($permission); 25 | } 26 | 27 | public function SyncPermToRole(int $roleID, array $permissions) 28 | { 29 | $query = $this->roleModel::query(); 30 | $role = $query->find($roleID); 31 | 32 | return $role->syncPermissions($permissions); 33 | } 34 | 35 | public function getPermissionsModule() 36 | { 37 | $query = $this->model::query(); 38 | return array_keys(collect($query->get())->keyBy('module')->toArray()); 39 | } 40 | 41 | 42 | } -------------------------------------------------------------------------------- /src/Repository/Eloquents/RoleRepository.php: -------------------------------------------------------------------------------- 1 | syncRoles($roles); 16 | } 17 | 18 | public function setRoleToMember($owner, $role, $assign = true) 19 | { 20 | if ($assign) 21 | { 22 | return $owner->assignRole($role); 23 | } 24 | 25 | return $owner->removeRole($role); 26 | } 27 | 28 | public function getAllRolePermissions(Role $role, $method = 'get') 29 | { 30 | if ($method == 'pluck'){ 31 | return $role->getAllPermissions()->pluck('id','id')->toArray(); 32 | } 33 | 34 | return $role->getAllPermissions(); 35 | } 36 | 37 | } -------------------------------------------------------------------------------- /src/Repository/Eloquents/UserRepository.php: -------------------------------------------------------------------------------- 1 | model::query(); 16 | 17 | return $query->when($roleRequest, function ($q) use($roleRequest){ 18 | 19 | $q->whereHas('roles', function ($q) use ($roleRequest) { 20 | $q->where('name', $roleRequest->name); 21 | }); 22 | 23 | }) 24 | ->orderBy('created_at','DESC') 25 | ->paginate(); 26 | 27 | } 28 | 29 | public function allWithTrashed() 30 | { 31 | $query = $this->model::query(); 32 | 33 | return $query->withTrashed() 34 | ->orderBy('created_at','DESC') 35 | ->paginate(); 36 | } 37 | 38 | public function restoreUser(int $ID) 39 | { 40 | $query = $this->model::query(); 41 | 42 | return $query->withTrashed()->where('id', $ID)->restore(); 43 | } 44 | 45 | 46 | } -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/apple-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/apple-icon.png -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/bg.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/bg.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/bg2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/bg2.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/bg3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/bg3.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/bg7.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/bg7.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/city-profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/city-profile.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/city.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/city.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/examples/clem-onojegaw.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/examples/clem-onojegaw.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/examples/clem-onojeghuo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/examples/clem-onojeghuo.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/examples/cynthia-del-rio.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/examples/cynthia-del-rio.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/examples/mariya-georgieva.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/examples/mariya-georgieva.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/examples/olu-eletu.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/examples/olu-eletu.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/examples/studio-1.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/examples/studio-1.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/examples/studio-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/examples/studio-2.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/examples/studio-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/examples/studio-3.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/examples/studio-4.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/examples/studio-4.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/examples/studio-5.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/examples/studio-5.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/faces/avatar.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/faces/avatar.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/faces/camp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/faces/camp.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/faces/card-profile1-square.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/faces/card-profile1-square.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/faces/card-profile2-square.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/faces/card-profile2-square.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/faces/card-profile4-square.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/faces/card-profile4-square.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/faces/card-profile5-square.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/faces/card-profile5-square.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/faces/card-profile6-square.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/faces/card-profile6-square.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/faces/christian.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/faces/christian.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/faces/kendall.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/faces/kendall.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/faces/marc.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/faces/marc.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/landing.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/landing.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/leaf1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/leaf1.png -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/leaf2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/leaf2.png -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/leaf3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/leaf3.png -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/leaf4.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/leaf4.png -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/nature-2.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/nature-2.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/nature-3.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/nature-3.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/nature.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/nature.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/profile.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/profile.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/profile_city.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/profile_city.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/img/vue-mk-header.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Resource/js/mekaeils-package/assets/img/vue-mk-header.jpg -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit.scss: -------------------------------------------------------------------------------- 1 | /*! 2 | 3 | ========================================================= 4 | * Vue Material Kit - v1.2.0 5 | ========================================================= 6 | 7 | * Product Page: http://www.creative-tim.com/product/vue-material-kit 8 | * Copyright 2019 Creative Tim (http://www.creative-tim.com) 9 | * Licensed under MIT (https://github.com/creativetimofficial/vue-material-kit/blob/master/LICENSE.md) 10 | 11 | ========================================================= 12 | 13 | * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 14 | 15 | */ 16 | 17 | 18 | //variables and mixins 19 | @import "material-kit/variables"; 20 | @import "material-kit/mixins"; 21 | @import "material-kit/shadows"; 22 | 23 | //plugin css 24 | @import "material-kit/plugins/_perfect-scrollbar"; 25 | @import "material-kit/plugins/_plugin-nouislider"; 26 | 27 | // Core CSS 28 | @import "material-kit/typography"; 29 | @import "material-kit/buttons"; 30 | @import "material-kit/carousel"; 31 | @import "material-kit/autocomplete"; 32 | @import "material-kit/misc"; 33 | @import "material-kit/images"; 34 | @import "material-kit/info-areas"; 35 | @import "material-kit/datepicker"; 36 | @import "material-kit/inputs"; 37 | @import "material-kit/badges"; 38 | @import "material-kit/progress"; 39 | @import "material-kit/alerts"; 40 | @import "material-kit/tables"; 41 | @import "material-kit/layout"; 42 | @import "material-kit/headers"; 43 | @import "material-kit/example-pages"; 44 | @import "material-kit/checkboxes"; 45 | @import "material-kit/togglebutton"; 46 | @import "material-kit/pagination"; 47 | @import "material-kit/radios"; 48 | @import "material-kit/pills"; 49 | @import "material-kit/dialogs"; 50 | @import "material-kit/navbars"; 51 | @import "material-kit/popups"; 52 | @import "material-kit/footers"; 53 | 54 | // Fancy Stuff 55 | @import "material-kit/dropdown"; 56 | @import "material-kit/cards"; 57 | @import "material-kit/tabs"; 58 | @import "material-kit/responsive"; 59 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_alerts.scss: -------------------------------------------------------------------------------- 1 | // This file has been autogenerated by grunt task lessToSass. Any changes will be overwritten. 2 | 3 | .alert { 4 | border: 0; 5 | border-radius: 0; 6 | position: relative; 7 | padding: 20px 15px; 8 | line-height: 20px; 9 | margin-bottom: 20px; 10 | 11 | .notifications &{ 12 | margin-bottom: 0; 13 | } 14 | 15 | .container { 16 | flex-direction: unset; 17 | display: flow-root; 18 | padding: 0 31px; 19 | line-height: 1.7; 20 | } 21 | 22 | b{ 23 | font-weight: $font-weight-bold; 24 | text-transform: uppercase; 25 | font-size: $font-size-small; 26 | } 27 | 28 | @include alert-color($gray-color); 29 | 30 | &.alert-info{ 31 | @include alert-color(lighten($brand-info,3%)); 32 | } 33 | 34 | &.alert-danger{ 35 | @include alert-color(lighten($brand-danger,3%)); 36 | } 37 | 38 | &.alert-primary{ 39 | @include alert-color(lighten($brand-primary,3%)); 40 | } 41 | 42 | &.alert-warning{ 43 | @include alert-color(lighten($brand-warning, 3%)); 44 | } 45 | 46 | &.alert-success{ 47 | @include alert-color(lighten($brand-success, 3%)); 48 | } 49 | 50 | 51 | &-info, &-danger, &-warning, &-success { 52 | color: $mdb-text-color-light; 53 | } 54 | 55 | &-default { 56 | a, .alert-link { 57 | color: $mdb-text-color-primary; 58 | } 59 | } 60 | 61 | .close{ 62 | position: absolute; 63 | right: 0; 64 | font-size: inherit; 65 | font-weight: 700; 66 | line-height: 1; 67 | color: $white-color; 68 | opacity: .9; 69 | background-color: transparent; 70 | border: 0; 71 | cursor: pointer; 72 | top: 0; 73 | bottom: 0; 74 | 75 | i { 76 | font-size: 20px !important; 77 | color: $white-color !important; 78 | font-weight: normal; 79 | } 80 | } 81 | 82 | i[data-notify="icon"] { 83 | font-size: 30px; 84 | display: block; 85 | left: 15px; 86 | position: absolute; 87 | top: 50%; 88 | margin-top: -15px; 89 | } 90 | 91 | .alert-icon{ 92 | display: inline-block; 93 | margin-right: $margin-base; 94 | 95 | i{ 96 | color: $white-color !important; 97 | height: 22px; 98 | } 99 | } 100 | } 101 | 102 | .alert.alert-with-icon { 103 | padding-left: 65px; 104 | } 105 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_autocomplete.scss: -------------------------------------------------------------------------------- 1 | .md-menu-content:not(.md-select-menu) .md-menu-content-container .md-list { 2 | .md-list-item { 3 | margin: 0 .3125rem; 4 | 5 | &:not(:last-child) { 6 | margin-bottom: 5px; 7 | } 8 | 9 | .md-list-item-button { 10 | background-color: transparent; 11 | color: $gray-dark !important; 12 | border-radius: 3px; 13 | 14 | &:hover { 15 | background-color: $brand-primary !important; 16 | @include shadow-big-color($brand-primary); 17 | color: #FFF !important; 18 | } 19 | 20 | .md-list-item-content { 21 | min-height: 38px; 22 | font-size: 13px; 23 | 24 | span { 25 | top: auto; 26 | left: auto; 27 | right: 0; 28 | padding-left: 15px; 29 | padding-right: 15px; 30 | } 31 | } 32 | } 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_badges.scss: -------------------------------------------------------------------------------- 1 | .badge { 2 | display: inline-block; 3 | border-radius: $border-radius-label; 4 | padding: 5px 12px; 5 | text-transform: uppercase; 6 | font-size: 10px; 7 | color: $white-color; 8 | font-weight: 500; 9 | line-height: 1; 10 | text-align: center; 11 | white-space: nowrap; 12 | vertical-align: baseline; 13 | 14 | &:not(:last-child) { 15 | margin-right: 5px; 16 | } 17 | 18 | @include badge-color(); 19 | } 20 | 21 | 22 | .badge-default[href]:hover, 23 | .badge-default[href]:focus { 24 | background-color: darken($gray-light, 5%); 25 | } 26 | 27 | .badge-primary[href]:hover, 28 | .badge-primary[href]:focus { 29 | background-color: darken($brand-primary, 5%); 30 | } 31 | 32 | .badge-info[href]:hover, 33 | .badge-info[href]:focus { 34 | background-color: darken($brand-info, 5%); 35 | } 36 | 37 | .badge-success[href]:hover, 38 | .badge-success[href]:focus { 39 | background-color: darken($brand-success, 5%); 40 | } 41 | 42 | .badge-warning[href]:hover, 43 | .badge-warning[href]:focus { 44 | background-color: darken($brand-warning, 5%); 45 | color: $white-color; 46 | } 47 | 48 | .badge-danger[href]:hover, 49 | .badge-danger[href]:focus { 50 | background-color: darken($brand-danger, 5%); 51 | } 52 | .badge-rose[href]:hover, 53 | .badge-rose[href]:focus { 54 | background-color: darken($brand-rose, 5%); 55 | } 56 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_carousel.scss: -------------------------------------------------------------------------------- 1 | .VueCarousel-pagination { 2 | position: absolute; 3 | bottom: 5px; 4 | margin-bottom: 15px; 5 | } 6 | 7 | .VueCarousel-wrapper { 8 | border-radius: $border-radius-large; 9 | } 10 | 11 | .VueCarousel-dot { 12 | width: 10px !important; 13 | height: 10px !important; 14 | padding: 0 !important; 15 | margin: 10px; 16 | border: 1px solid #fff; 17 | background: #FFF !important; 18 | box-shadow: 0 2px 2px 0 rgba(0,0,0,.14), 0 3px 1px -2px rgba(0,0,0,.12), 0 1px 5px 0 rgba(0,0,0,.2); 19 | border-radius: 2px !important; 20 | transition: all .3s linear; 21 | 22 | &:focus { 23 | outline: 0 !important; 24 | } 25 | } 26 | 27 | .VueCarousel-dot--active { 28 | margin-top: 10px; 29 | transform: scale(1.5); 30 | box-shadow: 0 4px 5px 0 rgba(0,0,0,.14), 0 1px 10px 0 rgba(0,0,0,.12), 0 2px 4px -1px rgba(0,0,0,.2); 31 | } 32 | 33 | .carousel-caption { 34 | position: absolute; 35 | bottom: 25px; 36 | left: 0; 37 | right: 0; 38 | text-align: center; 39 | padding-top: 20px; 40 | padding-bottom: 45px; 41 | 42 | &, 43 | .md-icon, 44 | .fa, 45 | .fab, 46 | .fas { 47 | color: $white-color !important; 48 | } 49 | } 50 | 51 | .VueCarousel-navigation-prev { 52 | left: 95px !important; 53 | 54 | } 55 | 56 | .VueCarousel-navigation-next { 57 | right: 95px !important; 58 | } 59 | 60 | .VueCarousel-navigation-prev i, 61 | .VueCarousel-navigation-next i { 62 | font-size: 50px; 63 | color: $white-color !important; 64 | opacity: .5; 65 | 66 | &:hover { 67 | opacity: 1; 68 | } 69 | } 70 | 71 | .VueCarousel-slide { 72 | position: relative; 73 | } 74 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_checkboxes.scss: -------------------------------------------------------------------------------- 1 | .md-checkbox{ 2 | .md-checkbox-container{ 3 | border: 1px solid rgba(0, 0, 0, .54); 4 | border-radius: 3px; 5 | 6 | .md-ripple{ 7 | overflow: hidden; 8 | } 9 | } 10 | 11 | &.md-checked .md-checkbox-container{ 12 | &:after{ 13 | border-color: $brand-primary !important; 14 | top: 1px; 15 | left: 6px; 16 | } 17 | } 18 | 19 | .md-checkbox-label{ 20 | font-weight: 400; 21 | font-size: .875rem; 22 | color: #aaa; 23 | padding-left: 10px; 24 | } 25 | 26 | &.md-theme-default.md-checked .md-checkbox-container{ 27 | background-color: transparent !important; 28 | border-color: inherit; 29 | } 30 | 31 | &.md-theme-default.md-checked .md-ripple{ 32 | color: inherit; 33 | } 34 | 35 | &.md-disabled .md-checkbox-label, 36 | &.md-disabled .md-checkbox-container{ 37 | opacity: .26; 38 | border-color: rgba(0, 0, 0, .54) !important; 39 | } 40 | 41 | &.md-checked.md-disabled .md-checkbox-container{ 42 | background-color: transparent !important; 43 | border-color: rgba(0, 0, 0, .54) !important; 44 | opacity: .26; 45 | 46 | &:after{ 47 | border-color: rgba(0, 0, 0, .54) !important; 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_datepicker.scss: -------------------------------------------------------------------------------- 1 | .md-datepicker-body-header{ 2 | .md-icon-button{ 3 | background-color: transparent !important; 4 | box-shadow: none !important; 5 | font-weight: 500; 6 | 7 | &:hover, 8 | &:focus{ 9 | background-color: #eee !important; 10 | } 11 | 12 | .md-button-content svg{ 13 | fill: #212529 !important; 14 | } 15 | } 16 | } 17 | 18 | .md-dialog-actions .md-button { 19 | &, 20 | &:hover, 21 | &:focus, 22 | &:active, 23 | &.active, 24 | &:active:focus, 25 | &:active:hover, 26 | &.active:focus, 27 | &.active:hover, 28 | .open > &.dropdown-toggle, 29 | .open > &.dropdown-toggle:focus, 30 | .open > &.dropdown-toggle:hover { 31 | background-color: $brand-success !important; 32 | } 33 | 34 | &:focus, 35 | &:active, 36 | &:hover{ 37 | // remove this line if you want black shadows 38 | @include button-shadow-color($brand-success); 39 | } 40 | } 41 | 42 | .md-datepicker-header .md-datepicker-date-select{ 43 | font-size: 30px; 44 | } 45 | 46 | .md-button[class*="md-datepicker-"]{ 47 | background-color: transparent !important; 48 | box-shadow: none !important; 49 | font-weight: 500; 50 | border-radius: 3px; 51 | margin-left: 48px; 52 | margin-right: 48px; 53 | 54 | &:hover, 55 | &:focus{ 56 | background-color: #eee !important; 57 | } 58 | 59 | .md-button-content{ 60 | color: #212529 !important; 61 | } 62 | } 63 | 64 | .md-datepicker-day-button{ 65 | font-size: 0.875rem; 66 | 67 | &:hover, 68 | &:focus{ 69 | background-color: #eee !important; 70 | } 71 | } 72 | 73 | .md-datepicker-today, 74 | .md-datepicker-selected{ 75 | @include shadow-2dp-color($brand-success); 76 | font-weight: lighter !important; 77 | 78 | &, 79 | &:hover, 80 | &:focus{ 81 | background-color: $brand-success !important; 82 | color: $white-color !important; 83 | } 84 | } 85 | 86 | .md-datepicker-month-button, 87 | .md-datepicker-year-button{ 88 | font-weight: 300; 89 | } 90 | 91 | .md-datepicker-dayname, 92 | .md-datepicker-monthname, 93 | .md-datepicker-day{ 94 | font-weight: 300 !important; 95 | } 96 | 97 | .md-datepicker-dialog .md-datepicker-header{ 98 | background: linear-gradient(60deg, $green-400, $green-600) !important; 99 | } 100 | 101 | .md-datepicker-overlay, 102 | .md-datepicker-dialog { 103 | z-index: 9999; 104 | } 105 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_dialogs.scss: -------------------------------------------------------------------------------- 1 | .modal-mask { 2 | position: fixed; 3 | z-index: 9998; 4 | top: 0; 5 | left: 0; 6 | width: 100%; 7 | height: 100%; 8 | background-color: rgba(0, 0, 0, .2); 9 | display: table; 10 | transition: opacity .15s ease; 11 | } 12 | 13 | .modal-wrapper { 14 | display: table-cell; 15 | vertical-align: middle; 16 | } 17 | 18 | .picture{ 19 | max-width: 150px; 20 | 21 | img{ 22 | border-radius: 6px; 23 | } 24 | } 25 | 26 | .modal-title{ 27 | margin: 0; 28 | line-height: 1.5; 29 | } 30 | 31 | .modal-body{ 32 | padding: 24px 24px 16px; 33 | 34 | p{ 35 | margin-top: 0; 36 | } 37 | } 38 | 39 | .modal-container { 40 | max-width: 500px; 41 | margin: 0px auto; 42 | position: relative; 43 | background-color: #fff; 44 | transition: all .3s ease; 45 | box-shadow: 0 27px 24px 0 rgba(0,0,0,.2), 0 40px 77px 0 rgba(0,0,0,.22); 46 | border-radius: 6px; 47 | border: none; 48 | } 49 | 50 | .modal-header{ 51 | display: flex; 52 | align-items: center; 53 | justify-content: center; 54 | padding: 24px 24px 0; 55 | border-top-left-radius: .3rem; 56 | border-top-right-radius: .3rem; 57 | 58 | .md-button .md-button-content i{ 59 | font-size: 16px !important; 60 | opacity: .5; 61 | 62 | &:hover, 63 | &:focus{ 64 | opacity: 1; 65 | } 66 | } 67 | } 68 | 69 | .modal-footer{ 70 | display: flex; 71 | align-items: center; 72 | justify-content: flex-end; 73 | padding: 24px; 74 | padding-top: 0; 75 | 76 | .md-button{ 77 | margin: 0; 78 | .md-ripple{ 79 | padding-left: 16px !important; 80 | padding-right: 16px !important; 81 | width: auto; 82 | } 83 | } 84 | } 85 | 86 | .notice-modal + .modal-mask .modal-footer, 87 | .small-alert-modal + .modal-mask .modal-footer{ 88 | justify-content: center; 89 | } 90 | 91 | .instruction{ 92 | margin-bottom: 25px; 93 | } 94 | 95 | .small-alert-modal + .modal-mask .modal-container{ 96 | width: 300px; 97 | margin: 0 auto; 98 | 99 | .modal-body{ 100 | margin-top: 20px; 101 | } 102 | } 103 | 104 | .modal-header h3 { 105 | margin-top: 0; 106 | color: #42b983; 107 | } 108 | 109 | .modal-default-button { 110 | position: absolute !important; 111 | right: 9px; 112 | top: 12px; 113 | } 114 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_dropdown.scss: -------------------------------------------------------------------------------- 1 | .dropdown-menu{ 2 | position: absolute; 3 | top: 100%; 4 | left: 0; 5 | z-index: 1000; 6 | display: none; 7 | float: left; 8 | min-width: 160px; 9 | padding: 5px 0; 10 | margin: 2px 0 0; 11 | font-size: 14px; 12 | text-align: left; 13 | list-style: none; 14 | background-color: #fff; 15 | border-radius: 4px; 16 | border: 0; 17 | box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.26); 18 | 19 | li > a{ 20 | font-size: $mdb-dropdown-font-size; 21 | padding: .625rem 1.5rem; 22 | margin: 0 5px; 23 | text-transform: none; 24 | line-height: 1.428571; 25 | color: $gray-dark !important; 26 | border-radius: $border-radius-small; 27 | @include transition($fast-transition-time, $transition-linear); 28 | 29 | &:hover, 30 | &:focus { 31 | @include shadow-8dp(); 32 | 33 | } 34 | } 35 | 36 | &.dropdown-with-icons{ 37 | li > a{ 38 | padding: 12px 20px 12px 12px; 39 | 40 | .material-icons{ 41 | vertical-align: middle; 42 | font-size: 24px; 43 | position: relative; 44 | margin-top: -4px; 45 | top: 1px; 46 | margin-right: 12px; 47 | opacity: .5; 48 | } 49 | } 50 | } 51 | 52 | li { 53 | position: relative; 54 | a:hover, 55 | a:focus, 56 | a:active { 57 | background-color: $brand-success !important; 58 | color: $white-color !important; 59 | } 60 | } 61 | } 62 | 63 | .dropdown-divider { 64 | height: 0; 65 | margin: .5rem 0; 66 | overflow: hidden; 67 | border-top: 1px solid #e9ecef; 68 | } 69 | 70 | .dropdown-header { 71 | font-size: .75rem; 72 | padding-top: .1875rem; 73 | padding-bottom: .1875rem; 74 | text-transform: none; 75 | color: #777; 76 | line-height: 1.428571; 77 | font-weight: 300; 78 | display: block; 79 | padding: .5rem 1.25rem; 80 | } 81 | 82 | .dropdown-toggle:not(.md-button):after, 83 | .dropdown-toggle .md-ripple:after 84 | { 85 | width: 0; 86 | height: 0; 87 | vertical-align: .255em; 88 | content: ""; 89 | border-right: .3em solid transparent; 90 | border-left: .3em solid transparent; 91 | display: inline-block; 92 | margin-left: .555em; 93 | border-top: .3em solid; 94 | border-bottom: 0; 95 | margin-top: -1px; 96 | will-change: transform; 97 | transition: transform 150ms linear; 98 | } 99 | 100 | 101 | .navbar-nav > li > .dropdown-menu, 102 | .dropdown .dropdown-menu, 103 | .dropdown-menu.bootstrap-datetimepicker-widget{ 104 | @include transition($fast-transition-time, $transition-linear); 105 | display: block; 106 | transform: scale(0); 107 | transform-origin: 0 0; 108 | @include opacity(0); 109 | } 110 | .navbar-nav > li.open > .dropdown-menu, 111 | .dropdown.open .dropdown-menu, 112 | .dropdown-menu.bootstrap-datetimepicker-widget.open{ 113 | @include opacity(1); 114 | transform: scale(1); 115 | 116 | } 117 | 118 | .dropdown .dropdown-menu.dropdown-menu-right { 119 | transform-origin: 100% 0; 120 | } 121 | 122 | .dropdown-menu-right{ 123 | right: 0; 124 | left: auto; 125 | } 126 | 127 | .md-list-item.dropdown{ 128 | .md-list-item-container{ 129 | a[data-toggle="dropdown"]{ 130 | padding: 10px 15px; 131 | } 132 | 133 | .md-ripple{ 134 | padding: 0; 135 | } 136 | } 137 | } 138 | 139 | .md-ripple{ 140 | -webkit-mask-image: none; 141 | overflow: hidden; 142 | 143 | > span{ 144 | width: 100%; 145 | height: 100%; 146 | overflow: hidden; 147 | position: absolute; 148 | left: 0; 149 | z-index: -1; 150 | } 151 | } 152 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_footers.scss: -------------------------------------------------------------------------------- 1 | footer{ 2 | padding: $padding-base 0; 3 | 4 | nav, 5 | .copyright{ 6 | display: inline-block; 7 | } 8 | 9 | ul{ 10 | padding: 0; 11 | margin: 0; 12 | list-style: none; 13 | 14 | li{ 15 | display: inline-block; 16 | 17 | a{ 18 | color: inherit !important; 19 | padding: $padding-base; 20 | font-weight: $font-weight-bold; 21 | font-size: $mdb-btn-font-size-base; 22 | text-transform: uppercase; 23 | border-radius: $border-radius-base; 24 | text-decoration: none; 25 | position: relative; 26 | display: block; 27 | 28 | &:hover{ 29 | text-decoration: none; 30 | } 31 | } 32 | 33 | &:first-child a{ 34 | margin-left: -15px; 35 | } 36 | } 37 | } 38 | 39 | .copyright{ 40 | padding: 15px 0; 41 | margin: 0; 42 | .md-icon{ 43 | font-size: 18px !important; 44 | color: inherit !important; 45 | width: auto !important; 46 | min-width: auto !important; 47 | 48 | } 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_headers.scss: -------------------------------------------------------------------------------- 1 | .page-header{ 2 | height: 100vh; 3 | background-position: center center; 4 | background-size: cover; 5 | margin: 0; 6 | padding: 0; 7 | border: 0; 8 | display: flex; 9 | align-items: center; 10 | justify-content: center; 11 | 12 | .carousel .carousel-indicators{ 13 | bottom: 60px; 14 | } 15 | 16 | > .container{ 17 | color: $white-color; 18 | } 19 | 20 | .title{ 21 | color: $white-color; 22 | } 23 | 24 | &.header-small{ 25 | height: 65vh; 26 | min-height: 65vh; 27 | } 28 | 29 | .iframe-container{ 30 | iframe{ 31 | width: 100%; 32 | box-shadow: 0 16px 38px -12px rgba(0, 0, 0, 0.56), 33 | 0 4px 25px 0px rgba(0, 0, 0, 0.12), 34 | 0 8px 10px -5px rgba(0, 0, 0, 0.2); 35 | } 36 | } 37 | } 38 | 39 | .header-filter{ 40 | position: relative; 41 | 42 | &:before, 43 | &:after{ 44 | position: absolute; 45 | z-index: 1; 46 | width: 100%; 47 | height: 100%; 48 | display: block; 49 | left: 0; 50 | top: 0; 51 | content: ""; 52 | } 53 | 54 | .md-layout{ 55 | z-index: 2; 56 | position: relative; 57 | } 58 | } 59 | .clear-filter::before { 60 | background: none; 61 | } 62 | 63 | .purple-filter:after{ 64 | background: rgba(101, 47, 142, 0.64); 65 | background: linear-gradient(45deg, rgba(101, 47, 142, 0.88) 0%, rgba(125, 46, 185, 0.45) 100%); 66 | background: -moz-linear-gradient(135deg, rgba(101, 47, 142, 0.88) 0%, rgba(125, 46, 185, 0.45) 100%); 67 | background: -webkit-linear-gradient(135deg, rgba(101, 47, 142, 0.88) 0%, rgba(125, 46, 185, 0.45) 100%); 68 | } 69 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_images.scss: -------------------------------------------------------------------------------- 1 | .img-thumbnail{ 2 | border-radius: 16px; 3 | } 4 | .img-raised{ 5 | @include shadow-big-image(); 6 | } 7 | 8 | .rounded{ 9 | border-radius: $border-radius-large !important; 10 | } 11 | 12 | .rounded-circle { 13 | border-radius: 50%!important; 14 | } 15 | 16 | .responsive-image { 17 | max-width: 50%; 18 | margin: 0 auto; 19 | } 20 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_info-areas.scss: -------------------------------------------------------------------------------- 1 | .info{ 2 | max-width: 360px; 3 | margin: 0 auto; 4 | padding: 70px 0 30px; 5 | 6 | .icon{ 7 | color: $gray-color; 8 | 9 | > i{ 10 | font-size: 3.85rem !important; 11 | min-width: auto; 12 | width: auto; 13 | height: auto; 14 | vertical-align: unset; 15 | } 16 | } 17 | .info-title{ 18 | color: $black-color; 19 | margin: 0.875rem * 2 0 0.875rem; 20 | } 21 | p{ 22 | color: $gray-color; 23 | } 24 | } 25 | 26 | .info-horizontal{ 27 | .icon{ 28 | float: left; 29 | margin-top: 24px; 30 | margin-right: 10px; 31 | 32 | >i{ 33 | font-size: $font-size-h2; 34 | } 35 | } 36 | .description{ 37 | overflow: hidden; 38 | } 39 | 40 | } 41 | 42 | .icon { 43 | 44 | &.icon-primary i{ 45 | color: $brand-primary !important; 46 | } 47 | &.icon-info i{ 48 | color: $brand-info !important; 49 | } 50 | &.icon-success i{ 51 | color: $brand-success !important; 52 | } 53 | &.icon-warning i{ 54 | color: $brand-warning !important; 55 | } 56 | &.icon-danger i{ 57 | color: $brand-danger !important; 58 | } 59 | &.icon-rose i{ 60 | color: $brand-rose !important; 61 | } 62 | } 63 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_layout.scss: -------------------------------------------------------------------------------- 1 | .md-layout-item{ 2 | padding-right: 15px; 3 | padding-left: 15px; 4 | } 5 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_misc.scss: -------------------------------------------------------------------------------- 1 | body { 2 | background-color: #EEEEEE; 3 | letter-spacing: unset; 4 | font-size: 1rem; 5 | color: $black-color; 6 | line-height: 1.5em; 7 | } 8 | 9 | .main{ 10 | background: #FFFFFF; 11 | position: relative; 12 | z-index: 3; 13 | } 14 | 15 | .main-raised{ 16 | margin: -60px 30px 0px; 17 | border-radius: $border-radius-base * 2; 18 | @include shadow-16dp(); 19 | } 20 | 21 | .wrapper{ 22 | &.wrapper-full-page{ 23 | height: auto; 24 | min-height: 100vh; 25 | } 26 | } 27 | 28 | 29 | blockquote{ 30 | p{ 31 | font-style: italic; 32 | } 33 | } 34 | 35 | .life-of-material-dashboard{ 36 | background: #FFFFFF; 37 | } 38 | 39 | a{ 40 | color: $link-color; 41 | &:hover, 42 | &:focus{ 43 | color: darken($link-color, 5%) !important; 44 | text-decoration: none !important; 45 | } 46 | 47 | &.text-info{ 48 | &:hover, &:focus{ 49 | color: darken($brand-info, 5%); 50 | } 51 | } 52 | 53 | & .material-icons { 54 | vertical-align: middle; 55 | } 56 | } 57 | 58 | .dropdown.open .dropdown-toggle .md-ripple:after { 59 | @include rotate-180(); 60 | } 61 | 62 | .caret, 63 | .md-toolbar { 64 | @include transition($fast-transition-time, $transition-ease-in); 65 | } 66 | 67 | /* Animations */ 68 | .animation-transition-general{ 69 | @include transition($general-transition-time, $transition-linear); 70 | } 71 | 72 | .animation-transition-slow{ 73 | @include transition($slow-transition-time, $transition-linear); 74 | } 75 | 76 | .animation-transition-fast{ 77 | @include transition($fast-transition-time, $transition-ease); 78 | } 79 | legend { 80 | border-bottom: 0; 81 | } 82 | 83 | .pull-left{ 84 | float: left; 85 | } 86 | 87 | .pull-right{ 88 | float: right; 89 | } 90 | 91 | // Prevent highlight on mobile 92 | * { 93 | -webkit-tap-highlight-color: rgba(255, 255, 255, 0); 94 | -webkit-tap-highlight-color: transparent; 95 | &:focus { 96 | outline: 0; 97 | } 98 | } 99 | 100 | .text-center{ 101 | text-align: center; 102 | } 103 | .text-left{ 104 | text-align: left; 105 | } 106 | .text-right{ 107 | text-align: right; 108 | } 109 | .places-buttons{ 110 | .md-button{ 111 | width: 30%; 112 | margin-left: 10px; 113 | margin-right: 10px; 114 | } 115 | } 116 | 117 | .md-theme-default :not(input):not(textarea)::selection{ 118 | background-color: #c8c8c8 !important; 119 | } 120 | 121 | .container, 122 | .container-fluid { 123 | padding-right: 15px; 124 | padding-left: 15px; 125 | display: flex; 126 | justify-content: space-between; 127 | width: 100%; 128 | margin-left: auto; 129 | margin-right: auto; 130 | position: relative; 131 | 132 | .section & { 133 | flex-direction: column; 134 | } 135 | } 136 | 137 | .md-ripple .md-ripple-wave { 138 | border-radius: 50% !important; 139 | } 140 | 141 | .small, small { 142 | font-size: 75%; 143 | color: #777; 144 | font-weight: 400; 145 | } 146 | 147 | .ml-auto, 148 | .mx-auto { 149 | margin-left: auto !important; 150 | } 151 | 152 | .mr-auto, 153 | .mx-auto { 154 | margin-right: auto!important; 155 | } 156 | 157 | .md-layout { 158 | margin-right: -15px; 159 | margin-left: -15px; 160 | } 161 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_pagination.scss: -------------------------------------------------------------------------------- 1 | .page-link{ 2 | position: relative; 3 | display: block; 4 | padding: .5rem .75rem; 5 | margin-left: 0; 6 | line-height: 1.25; 7 | color: #2196f3; 8 | background-color: transparent; 9 | border: 0 solid #dee2e6; 10 | } 11 | 12 | .no-arrows{ 13 | display: none; 14 | } 15 | 16 | .pagination{ 17 | display: flex; 18 | padding-left: 0; 19 | list-style: none; 20 | border-radius: .25rem; 21 | 22 | > .page-item > .page-link, 23 | > .page-item > span{ 24 | border: 0; 25 | border-radius: 30px !important; 26 | transition: all .3s; 27 | margin: 0 3px; 28 | padding: 0; 29 | min-width: 30px; 30 | height: 30px; 31 | line-height: 30px; 32 | color: $gray-color; 33 | font-weight: $font-weight-default; 34 | font-size: $mdb-btn-font-size-base; 35 | text-transform: uppercase; 36 | background: transparent; 37 | text-align: center; 38 | cursor: pointer; 39 | 40 | &:hover, 41 | &:focus{ 42 | color: $gray-color !important; 43 | } 44 | } 45 | 46 | > .page-item.active > a, 47 | > .page-item.active > span{ 48 | color: $gray-color; 49 | 50 | &, 51 | &:focus, 52 | &:hover{ 53 | background-color: $brand-primary; 54 | border-color: $brand-primary; 55 | color: $white-color !important; 56 | @include shadow-4dp-color($brand-primary); 57 | } 58 | 59 | } 60 | 61 | // Colors 62 | &.pagination-info{ 63 | > .page-item.active > a, 64 | > .page-item.active > span{ 65 | &, 66 | &:focus, 67 | &:hover{ 68 | background-color: $brand-info; 69 | border-color: $brand-info; 70 | @include shadow-4dp-color($brand-info); 71 | } 72 | } 73 | } 74 | 75 | &.pagination-success{ 76 | > .page-item.active > a, 77 | > .page-item.active > span{ 78 | &, 79 | &:focus, 80 | &:hover{ 81 | background-color: $brand-success; 82 | border-color: $brand-success; 83 | @include shadow-4dp-color($brand-success); 84 | } 85 | } 86 | } 87 | &.pagination-rose{ 88 | > .page-item.active > a, 89 | > .page-item.active > span{ 90 | &, 91 | &:focus, 92 | &:hover{ 93 | background-color: $brand-rose; 94 | border-color: $brand-rose; 95 | @include shadow-4dp-color($brand-rose); 96 | } 97 | } 98 | } 99 | 100 | &.pagination-warning{ 101 | > .page-item.active > a, 102 | > .page-item.active > span{ 103 | &, 104 | &:focus, 105 | &:hover{ 106 | background-color: $brand-warning; 107 | border-color: $brand-warning; 108 | @include shadow-4dp-color($brand-warning); 109 | } 110 | } 111 | } 112 | 113 | &.pagination-danger{ 114 | > .page-item.active > a, 115 | > .page-item.active > span{ 116 | &, 117 | &:focus, 118 | &:hover{ 119 | background-color: $brand-danger; 120 | border-color: $brand-danger; 121 | @include shadow-4dp-color($brand-danger); 122 | } 123 | } 124 | } 125 | } 126 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_pills.scss: -------------------------------------------------------------------------------- 1 | .nav-pills{ 2 | 3 | .section-dark &, 4 | .section-image &{ 5 | > li > a{ 6 | color: $gray-color; 7 | } 8 | > li{ 9 | > a:hover, 10 | > a:focus{ 11 | background-color: #EEEEEE; 12 | } 13 | } 14 | } 15 | 16 | > li { 17 | > a{ 18 | line-height: $mdb-btn-font-size-base * 2; 19 | text-transform: uppercase; 20 | font-size: $mdb-btn-font-size-base; 21 | font-weight: $font-weight-bold; 22 | min-width: 100px; 23 | text-align: center; 24 | color: $gray; 25 | transition: all .3s; 26 | 27 | &:hover{ 28 | background-color: rgba(200, 200, 200, 0.2); 29 | } 30 | } 31 | 32 | i{ 33 | display: block; 34 | font-size: 30px; 35 | padding: 15px 0; 36 | } 37 | 38 | &.active > a{ 39 | &, 40 | &:focus, 41 | &:hover{ 42 | background-color: $brand-primary; 43 | color: $white-color; 44 | @include shadow-big-color($brand-primary); 45 | } 46 | } 47 | 48 | } 49 | 50 | &:not(.nav-pills-icons){ 51 | > li > a{ 52 | border-radius: $border-radius-extreme; 53 | } 54 | } 55 | 56 | &.nav-stacked{ 57 | > li + li{ 58 | margin-top: 5px; 59 | } 60 | } 61 | 62 | &.nav-pills-info{ 63 | > li { 64 | &.active > a{ 65 | &, 66 | &:focus, 67 | &:hover{ 68 | background-color: $brand-info; 69 | @include shadow-big-color($brand-info); 70 | } 71 | } 72 | } 73 | } 74 | 75 | &.nav-pills-success{ 76 | > li { 77 | &.active > a{ 78 | &, 79 | &:focus, 80 | &:hover{ 81 | background-color: $brand-success; 82 | @include shadow-big-color($brand-success); 83 | } 84 | } 85 | } 86 | } 87 | 88 | &.nav-pills-warning{ 89 | > li { 90 | &.active > a{ 91 | &, 92 | &:focus, 93 | &:hover{ 94 | background-color: $brand-warning; 95 | @include shadow-big-color($brand-warning); 96 | } 97 | } 98 | } 99 | } 100 | 101 | &.nav-pills-danger{ 102 | > li { 103 | &.active > a{ 104 | &, 105 | &:focus, 106 | &:hover{ 107 | background-color: $brand-danger; 108 | @include shadow-big-color($brand-warning); 109 | } 110 | } 111 | } 112 | } 113 | 114 | } 115 | .tab-space{ 116 | padding: 20px 0 50px 0px; 117 | } 118 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_progress.scss: -------------------------------------------------------------------------------- 1 | .md-progress-bar{ 2 | height: 4px; 3 | margin-bottom: 20px; 4 | 5 | &.md-rose{ 6 | @include md-progress-bar($brand-rose); 7 | } 8 | &.md-danger{ 9 | @include md-progress-bar($brand-danger); 10 | } 11 | &.md-primary{ 12 | @include md-progress-bar($brand-primary); 13 | } 14 | &.md-info{ 15 | @include md-progress-bar($brand-info); 16 | } 17 | &.md-success{ 18 | @include md-progress-bar($brand-success); 19 | } 20 | &.md-warning{ 21 | @include md-progress-bar($brand-warning); 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_radios.scss: -------------------------------------------------------------------------------- 1 | .md-radio{ 2 | 3 | .md-radio-label{ 4 | padding-left: 10px; 5 | color: #aaa; 6 | font-size: .875rem; 7 | font-weight: 400; 8 | } 9 | 10 | .md-radio-container{ 11 | border: 1px solid rgba(0,0,0,.54) !important; 12 | width: 15px; 13 | min-width: 15px; 14 | height: 15px; 15 | top: 2px; 16 | transition: .2s !important; 17 | 18 | &:after{ 19 | transform: scale3D(0,0,0); 20 | transition: .2s !important; 21 | right: 2px; 22 | bottom: 2px; 23 | top: 2px; 24 | left: 2px; 25 | border-radius: 100%; 26 | } 27 | 28 | .md-ripple{ 29 | overflow: hidden; 30 | 31 | .md-ripple-wave{ 32 | background-color: $brand-primary; 33 | } 34 | } 35 | } 36 | 37 | &.md-checked .md-radio-container{ 38 | border-color: $brand-primary !important; 39 | 40 | &:after{ 41 | background-color: $brand-primary !important; 42 | } 43 | } 44 | 45 | &.md-disabled .md-radio-label, 46 | &.md-disabled .md-radio-container{ 47 | opacity: .26; 48 | border-color: rgba(0, 0, 0, .54) !important; 49 | } 50 | 51 | &.md-checked.md-disabled .md-radio-container{ 52 | background-color: transparent !important; 53 | border-color: rgba(0, 0, 0, .54) !important; 54 | opacity: .26; 55 | 56 | &:after{ 57 | background-color: rgba(0, 0, 0, .54) !important; 58 | } 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_tables.scss: -------------------------------------------------------------------------------- 1 | .md-table-cell-container{ 2 | padding: 0; 3 | .md-table-cell:last-child &{ 4 | padding-right: 0; 5 | text-align: right; 6 | display: flex; 7 | } 8 | } 9 | .md-table-head-container{ 10 | height: auto; 11 | padding: 0; 12 | } 13 | .md-tabs-content table thead{ 14 | display: none; 15 | } 16 | 17 | .md-tabs-container tbody .md-table-row:first-child td{ 18 | border: 0; 19 | } 20 | 21 | .md-table-cell{ 22 | padding: 12px 8px; 23 | font-size: $font-size-base; 24 | } 25 | 26 | .md-table-head-label{ 27 | font-size: $font-size-h5; 28 | padding-left: 8px; 29 | font-weight: 300; 30 | } 31 | 32 | .md-table .md-table-row:hover .md-table-cell{ 33 | background-color: transparent !important; 34 | } 35 | 36 | .md-table .md-table-row:hover{ 37 | background: $table-bg-hover !important; 38 | } 39 | 40 | .md-card-plain .md-card-content > div .md-table .md-table-content, 41 | .md-card-plain .md-card-content > div .md-table { 42 | background-color: transparent !important; 43 | } 44 | 45 | .md-table{ 46 | &[table-header-color="orange"] .md-table-head{ 47 | color: $brand-warning !important; 48 | } 49 | &[table-header-color="purple"] .md-table-head{ 50 | color: $brand-primary !important; 51 | } 52 | &[table-header-color="blue"] .md-table-head{ 53 | color: $brand-info !important; 54 | } 55 | &[table-header-color="red"] .md-table-head{ 56 | color: $brand-danger !important; 57 | } 58 | &[table-header-color="green"] .md-table-head{ 59 | color: $brand-success !important; 60 | } 61 | 62 | .md-table-row td{ 63 | border-top-color: rgba(0,0,0,.06) !important; 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_tabs.scss: -------------------------------------------------------------------------------- 1 | .md-tabs-navigation{ 2 | @include shadow-big(); 3 | margin: -50px -15px 0 -15px; 4 | border-radius: $border-radius-base; 5 | padding: $padding-base + 1 $padding-base $padding-base + 1 75px; 6 | background-color: $gray-color; 7 | overflow: auto; 8 | 9 | .md-icon-label .md-button-content{ 10 | flex-direction: row; 11 | } 12 | 13 | & + .md-tabs-content{ 14 | .md-checkbox.md-checked .md-checkbox-container:after{ 15 | top: 0px; 16 | left: 5px; 17 | } 18 | .md-tab { 19 | text-align: center; 20 | } 21 | } 22 | 23 | .no-label & { 24 | padding-left: 15px; 25 | } 26 | 27 | 28 | .md-button, 29 | .md-button:hover, 30 | .md-button:focus, 31 | .md-button:active { 32 | background-color: transparent !important; 33 | box-shadow: none; 34 | } 35 | 36 | .md-active, 37 | .md-active:hover, 38 | .md-active:focus{ 39 | background-color: rgba(255, 255, 255, 0.2) !important; 40 | box-shadow: none; 41 | } 42 | 43 | .md-button{ 44 | height: auto; 45 | border-radius: 3px; 46 | font-weight: 500; 47 | line-height: 24px; 48 | text-transform: uppercase; 49 | font-size: 12px; 50 | 51 | &:not(:last-child){ 52 | margin-right: 5px; 53 | } 54 | 55 | .md-tab-icon + .md-tab-label{ 56 | margin-top: 0px; 57 | margin-left: 7px; 58 | } 59 | 60 | .md-ripple{ 61 | padding: 10px 15px !important; 62 | } 63 | } 64 | } 65 | 66 | .md-tabs-indicator{ 67 | display: none; 68 | } 69 | 70 | .md-nav-tabs-title{ 71 | position: absolute; 72 | z-index: 9999; 73 | top: 6px; 74 | color: white; 75 | font-size: initial; 76 | margin-left: 15px; 77 | } 78 | 79 | .md-tab{ 80 | padding: 15px 0 0 0; 81 | } 82 | 83 | .md-card-nav-tabs.md-card-plain { 84 | .md-content.md-theme-default { 85 | background-color: transparent; 86 | } 87 | } 88 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_togglebutton.scss: -------------------------------------------------------------------------------- 1 | .md-switch .md-switch-thumb .md-ripple, 2 | .md-switch .md-switch-thumb:before { 3 | overflow: hidden; 4 | } 5 | 6 | .md-switch { 7 | display: flex; 8 | margin: 0; 9 | 10 | .md-switch-label { 11 | color: rgba(0,0,0,.26); 12 | font-size: 14px; 13 | line-height: 1.42857; 14 | font-weight: 400; 15 | margin-bottom: .5rem; 16 | } 17 | 18 | .md-switch-container{ 19 | background-color: rgba(80,80,80,.7) !important; 20 | } 21 | 22 | .md-switch-thumb { 23 | background-color: $white-color !important; 24 | border: 1px solid rgba(0,0,0,.54); 25 | box-shadow: 0 1px 3px 1px rgba(0,0,0,.4); 26 | 27 | .md-ripple .md-ripple-wave{ 28 | background-color: rgba(0,0,0,.54) !important; 29 | } 30 | } 31 | 32 | &.md-checked { 33 | .md-switch-thumb { 34 | border: 1px solid $brand-primary; 35 | 36 | .md-ripple .md-ripple-wave{ 37 | background-color: rgba(156,39,176,.7) !important; 38 | } 39 | } 40 | 41 | .md-switch-container { 42 | background-color: rgba(156,39,176,.7) !important; 43 | } 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/_typography.scss: -------------------------------------------------------------------------------- 1 | body, h1, h2, h3, h4, h5, h6, .h1, .h2, .h3, .h4 { 2 | font-family: $font-family-sans-serif; 3 | font-weight: 300; 4 | } 5 | 6 | h1,h2,h3,.h1,.h2,.h3{ 7 | margin-top: 20px; 8 | margin-bottom: 10px; 9 | } 10 | 11 | h4,h5,h6,.h4,.h5,.h6{ 12 | margin-top: 10px; 13 | margin-bottom: 10px; 14 | } 15 | 16 | h1, .h1 { 17 | font-size: $font-size-h1; 18 | line-height: 1.15em; 19 | } 20 | h2, .h2{ 21 | font-size: $font-size-h2; 22 | line-height: 1.5em; 23 | } 24 | h3, .h3{ 25 | font-size: $font-size-h3; 26 | line-height: 1.4em; 27 | } 28 | h4, .h4{ 29 | font-size: $font-size-h4; 30 | line-height: 1.5em; 31 | } 32 | h5, .h5 { 33 | font-size: $font-size-h5; 34 | line-height: 1.55em; 35 | margin-bottom: 15px; 36 | } 37 | h6, .h6{ 38 | font-size: $font-size-h6; 39 | text-transform: uppercase; 40 | font-weight: $font-weight-bold; 41 | } 42 | 43 | p{ 44 | font-size: $font-paragraph; 45 | margin: 0 0 10px; 46 | } 47 | 48 | h2.title{ 49 | margin-bottom: $margin-base * 2; 50 | } 51 | 52 | .title, 53 | .card-title, 54 | .info-title, 55 | .footer-brand, 56 | .footer-big h5, 57 | .footer-big h4, 58 | .media .media-heading{ 59 | font-weight: $font-weight-extra-bold; 60 | font-family: $font-family-serif; 61 | 62 | &, 63 | a{ 64 | color: $black-color; 65 | text-decoration: none; 66 | } 67 | } 68 | 69 | .description, 70 | .card-description, 71 | .footer-big p{ 72 | color: $gray-light; 73 | } 74 | 75 | .text-warning { 76 | color: $brand-warning !important; 77 | } 78 | .text-primary { 79 | color: $brand-primary !important; 80 | } 81 | .text-danger { 82 | color: $brand-danger !important; 83 | } 84 | .text-success { 85 | color: $brand-success !important; 86 | } 87 | .text-info { 88 | color: $brand-info !important; 89 | } 90 | .text-gray{ 91 | color: $gray-color !important; 92 | } 93 | .text-muted { 94 | color: #6c757d!important; 95 | } 96 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/assets/scss/material-kit/mixins/_transparency.scss: -------------------------------------------------------------------------------- 1 | // Opacity 2 | 3 | @mixin opacity($opacity) { 4 | opacity: $opacity; 5 | // IE8 filter 6 | $opacity-ie: ($opacity * 100); 7 | filter: #{alpha(opacity=$opacity-ie)}; 8 | } 9 | 10 | @mixin black-filter($opacity){ 11 | top: 0; 12 | left: 0; 13 | height: 100%; 14 | width: 100%; 15 | position: absolute; 16 | background-color: rgba(17,17,17,$opacity); 17 | display: block; 18 | content: ""; 19 | z-index: 1; 20 | } -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/layout/MainFooter.vue: -------------------------------------------------------------------------------- 1 | 40 | 53 | 54 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/layout/MobileMenu.vue: -------------------------------------------------------------------------------- 1 | 9 | 10 | 21 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/main.js: -------------------------------------------------------------------------------- 1 | // ========================================================= 2 | // * Vue Material Kit - v1.2.0 3 | // ========================================================= 4 | // 5 | // * Product Page: https://www.creative-tim.com/product/vue-material-kit 6 | // * Copyright 2019 Creative Tim (https://www.creative-tim.com) 7 | // * Licensed under MIT (https://github.com/creativetimofficial/vue-material-kit/blob/master/LICENSE.md) 8 | // 9 | // * Coded by Creative Tim 10 | // 11 | // ========================================================= 12 | // 13 | // * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 14 | 15 | import Vue from "vue"; 16 | import Router from "./router"; 17 | 18 | import MaterialKit from "./plugins/material-kit"; 19 | Vue.use(MaterialKit); 20 | 21 | Vue.config.productionTip = false; 22 | 23 | const NavbarStore = { 24 | showNavbar: false 25 | }; 26 | 27 | Vue.mixin({ 28 | data() { 29 | return { 30 | NavbarStore 31 | }; 32 | } 33 | }); 34 | 35 | const app = new Vue({ 36 | router: Router 37 | }).$mount('#app') -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/plugins/globalComponents.js: -------------------------------------------------------------------------------- 1 | import { DropDown } from "../views/components/Widgets"; 2 | import { Parallax } from "../views/components/Widgets"; 3 | import { VPopover } from "v-tooltip"; 4 | /** 5 | * You can register global components here and use them as a plugin in your main Vue instance 6 | */ 7 | 8 | const GlobalComponents = { 9 | install(Vue) { 10 | Vue.component("drop-down", DropDown); 11 | Vue.component(Parallax.name, Parallax); 12 | Vue.component("v-popover", VPopover); 13 | } 14 | }; 15 | 16 | export default GlobalComponents; 17 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/plugins/globalDirectives.js: -------------------------------------------------------------------------------- 1 | import { directive as vClickOutside } from "vue-clickaway"; 2 | 3 | /** 4 | * You can register global components here and use them as a plugin in your main Vue instance 5 | */ 6 | 7 | const GlobalDirectives = { 8 | install(Vue) { 9 | Vue.directive("click-outside", vClickOutside); 10 | } 11 | }; 12 | 13 | export default GlobalDirectives; 14 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/plugins/globalMixins.js: -------------------------------------------------------------------------------- 1 | /** 2 | * You can register global mixins here 3 | */ 4 | 5 | const GlobalMixins = { 6 | install(Vue) { 7 | Vue.mixin({ 8 | mounted() { 9 | let { bodyClass } = this.$options; 10 | if (bodyClass) { 11 | document.body.classList.add(bodyClass); 12 | } 13 | }, 14 | beforeDestroy() { 15 | let { bodyClass } = this.$options; 16 | if (bodyClass) { 17 | document.body.classList.remove(bodyClass); 18 | } 19 | } 20 | }); 21 | } 22 | }; 23 | 24 | export default GlobalMixins; 25 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/plugins/material-kit.js: -------------------------------------------------------------------------------- 1 | import VueMaterial from "vue-material"; 2 | import "vue-material/dist/vue-material.min.css"; 3 | import "../assets/scss/material-kit.scss"; 4 | import "../assets/demo.css"; 5 | import globalDirectives from "./globalDirectives"; 6 | import globalMixins from "./globalMixins"; 7 | import globalComponents from "./globalComponents"; 8 | import VueLazyload from "vue-lazyload"; 9 | import VueCarousel from "vue-carousel"; 10 | 11 | export default { 12 | install(Vue) { 13 | Vue.use(VueMaterial); 14 | Vue.use(globalDirectives); 15 | Vue.use(globalMixins); 16 | Vue.use(globalComponents); 17 | Vue.use(VueCarousel); 18 | Vue.use(VueLazyload, { 19 | observer: true, 20 | // optional 21 | observerOptions: { 22 | rootMargin: "0px", 23 | threshold: 0.1 24 | } 25 | }); 26 | } 27 | }; 28 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/router.js: -------------------------------------------------------------------------------- 1 | import Vue from "vue"; 2 | import Router from "vue-router"; 3 | import MaterialKit from "./views/Index.vue"; 4 | import Index from "./views/App.vue"; 5 | import Landing from "./views/Landing.vue"; 6 | import Login from "./views/Login.vue"; 7 | import Register from "./views/Register.vue"; 8 | import Profile from "./views/Profile.vue"; 9 | import MainNavbar from "./layout/MainNavbar.vue"; 10 | import MainFooter from "./layout/MainFooter.vue"; 11 | 12 | Vue.use(Router); 13 | 14 | // 2. Define some routes 15 | const routes = [ 16 | { 17 | path: "/", 18 | name: "index", 19 | components: { default: Index, header: MainNavbar, footer: MainFooter }, 20 | props: { 21 | header: { colorOnScroll: 400 }, 22 | footer: { backgroundColor: "black" } 23 | } 24 | }, 25 | { 26 | path: "/material-kit", 27 | name: "materialKit", 28 | components: { default: MaterialKit, header: MainNavbar, footer: MainFooter }, 29 | props: { 30 | header: { colorOnScroll: 400 }, 31 | footer: { backgroundColor: "black" } 32 | } 33 | }, 34 | { 35 | path: "/landing", 36 | name: "landing", 37 | components: { default: Landing, header: MainNavbar, footer: MainFooter }, 38 | props: { 39 | header: { colorOnScroll: 400 }, 40 | footer: { backgroundColor: "black" } 41 | } 42 | }, 43 | { 44 | path: "/users/login", 45 | name: "login", 46 | components: { default: Login, header: MainNavbar, footer: MainFooter }, 47 | props: { 48 | header: { colorOnScroll: 400 } 49 | } 50 | }, 51 | { 52 | path: "/users/register", 53 | name: "register", 54 | components: { default: Register, header: MainNavbar, footer: MainFooter }, 55 | }, 56 | { 57 | path: "/profile", 58 | name: "profile", 59 | components: { default: Profile, header: MainNavbar, footer: MainFooter }, 60 | props: { 61 | header: { colorOnScroll: 400 }, 62 | footer: { backgroundColor: "black" } 63 | } 64 | } 65 | ]; 66 | 67 | // 3. Create the router instance and pass the `routes` option 68 | export default new Router({ 69 | routes : routes, 70 | scrollBehavior: to => { 71 | if (to.hash) { 72 | return { selector: to.hash }; 73 | } else { 74 | return { x: 0, y: 0 }; 75 | } 76 | } 77 | }); 78 | 79 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/App.vue: -------------------------------------------------------------------------------- 1 |  13 | 14 | 15 | 24 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/Login.vue: -------------------------------------------------------------------------------- 1 | 54 | 55 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/Register.vue: -------------------------------------------------------------------------------- 1 | 58 | 59 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/components/LaravelUserManagement.vue: -------------------------------------------------------------------------------- 1 |  67 | 68 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/components/NavPillsSection.vue: -------------------------------------------------------------------------------- 1 | 76 | 77 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/components/NotificationsSection.vue: -------------------------------------------------------------------------------- 1 | 76 | 77 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/components/Widgets/Badge.vue: -------------------------------------------------------------------------------- 1 | 6 | 33 | 34 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/components/Widgets/Dropdown.vue: -------------------------------------------------------------------------------- 1 | 24 | 58 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/components/Widgets/Modal.vue: -------------------------------------------------------------------------------- 1 | 22 | 23 | 33 | 34 | 58 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/components/Widgets/Parallax.vue: -------------------------------------------------------------------------------- 1 | 6 | 7 | 55 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/components/Widgets/Tabs.vue: -------------------------------------------------------------------------------- 1 | 45 | 46 | 80 | 81 | 82 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/components/Widgets/cards/LoginCard.vue: -------------------------------------------------------------------------------- 1 | 20 | 21 | 48 | 49 | 50 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/components/Widgets/cards/NavTabsCard.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 21 | -------------------------------------------------------------------------------- /src/Resource/js/mekaeils-package/views/components/Widgets/index.js: -------------------------------------------------------------------------------- 1 | import DropDown from "./Dropdown.vue"; 2 | import Parallax from "./Parallax.vue"; 3 | import Pagination from "./Pagination.vue"; 4 | import Badge from "./Badge.vue"; 5 | import NavTabsCard from "./cards/NavTabsCard.vue"; 6 | import LoginCard from "./cards/LoginCard.vue"; 7 | import Tabs from "./Tabs.vue"; 8 | import Modal from "./Modal.vue"; 9 | 10 | export { 11 | DropDown, 12 | Parallax, 13 | Pagination, 14 | Badge, 15 | NavTabsCard, 16 | LoginCard, 17 | Tabs, 18 | Modal 19 | }; 20 | -------------------------------------------------------------------------------- /src/Resource/lang/en/trans.php: -------------------------------------------------------------------------------- 1 |  'Forgot password?', 6 | 'do_you_have_account' => 'Don\'t have an account?', 7 | 'create' => 'Create', 8 | 'keep_me_signin' => 'Keep me signed in', 9 | 'sign_in' => 'SIGN IN', 10 | 'sign_in_to_continue' => 'Sign in to continue.', 11 | 'get_start' => 'Hello! let\'s get started', 12 | 'new_here' => 'New here?', 13 | 'sign_up_title' => 'Signing up is easy. It only takes a few steps', 14 | 'login' => 'Login', 15 | 'have_account' => 'Already have an account?', 16 | 'sign_up' => 'SIGN UP', 17 | 18 | 'your_account_does_not_activated' => 'Your account does not activated!', 19 | 'username_or_password_wrong' => 'Your username or password is wrong!', 20 | 'something_is_wrong' => 'Something is wrong!', 21 | 'default_role_does_not_exist' => 'Ooops! Default role does not exist!', 22 | 'account_created_successfully' => 'Your account created successfully!', 23 | 24 | /// FORM PLACEHOLDERS TEXT 25 | 'placeholders' => [ 26 | 27 | 'password' => 'Password', 28 | 'confirm_password' => 'Password Confirmation', 29 | 'username' => 'Your Email', 30 | 'first_name' => 'First Name', 31 | 'last_name' => 'Last Name', 32 | 33 | ] 34 | 35 | ]; -------------------------------------------------------------------------------- /src/Resource/views/mekaeils-package/layouts/alert.blade.php: -------------------------------------------------------------------------------- 1 | 2 | @if($errors->any()) 3 |
4 | 9 |
10 | @endif 11 | 12 | @if (\Session::has("message")) 13 |
14 | {!! \Session::get("message")['text'] !!} 15 |
16 | @endif 17 | -------------------------------------------------------------------------------- /src/Resource/views/mekaeils-package/layouts/breadcrumb.blade.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/Resource/views/mekaeils-package/layouts/footer.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | @yield('footer') 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/Resource/views/mekaeils-package/layouts/header.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Laravel User Management 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | @yield('header') 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /src/Resource/views/mekaeils-package/layouts/side-nav.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/Resource/views/mekaeils-package/master.blade.php: -------------------------------------------------------------------------------- 1 | @include('mekaeils-package.layouts.header') 2 | 3 |
4 | 5 | @include('mekaeils-package.layouts.top-nav') 6 | 7 | 8 | 9 |
10 | 11 | @include('mekaeils-package.layouts.side-nav') 12 | 13 | 14 |
15 |
16 | @yield('breadcrumb') 17 | 18 | @include('mekaeils-package.layouts.alert') 19 | 20 | @yield('content') 21 |
22 | 23 |
24 |
25 | Laravel User Management Package By Mekaeil Andisheh. 26 | Theme By Bootstrap Dash. All rights reserved. 27 | Hand-crafted & made with 28 |
29 |
30 | 31 |
32 | 33 |
34 |
35 | 36 | @include('mekaeils-package.layouts.footer') -------------------------------------------------------------------------------- /src/Resource/views/mekaeils-package/vue/master.blade.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | Laravel User Management | Vue.js 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | -------------------------------------------------------------------------------- /src/Resource/views/user-management/auth/layouts/footer.blade.php: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | @yield('footer') 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/Resource/views/user-management/auth/layouts/header.blade.php: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | Authentication | {{ env('APP_NAME') }} 10 | 11 | 12 | 13 | 14 | 15 | @yield('header') 16 | 17 | 18 | 19 | 20 | 21 |
22 |
23 |
24 |
25 |
26 | 27 | @include('mekaeils-package.layouts.alert') 28 | 29 |
30 | 33 |
34 |
35 | 36 | -------------------------------------------------------------------------------- /src/Resource/views/user-management/auth/login.blade.php: -------------------------------------------------------------------------------- 1 | @extends('user-management.auth.master') 2 | 3 | @section('header') 4 | @parent 5 | 6 | @endsection 7 | 8 | @section('content') 9 | 10 |

{{ __('trans.get_start') }}

11 |
{{ __('trans.sign_in_to_continue') }}
12 | 13 |
14 | {{ csrf_field() }} 15 | 16 |
17 | 18 |
19 |
20 | 21 |
22 |
23 | 26 |
27 |
28 | {{-- {{ __('trans.Forgot_password') }} --}} 29 |
30 | 31 |
32 | {{ __('trans.do_you_have_account') }} 33 | {{__('trans.create') }} 34 | 35 |
36 |
37 | 38 | @endsection 39 | 40 | 41 | @section('footer') 42 | @parent 43 | 44 | @endsection -------------------------------------------------------------------------------- /src/Resource/views/user-management/auth/master.blade.php: -------------------------------------------------------------------------------- 1 | @include('user-management/auth/layouts/header') 2 | 3 | @yield('content') 4 | 5 | @include('user-management/auth/layouts/footer') 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Resource/views/user-management/auth/register.blade.php: -------------------------------------------------------------------------------- 1 | @extends('user-management.auth.master') 2 | 3 | @section('header') 4 | @parent 5 | 6 | @endsection 7 | 8 | @section('content') 9 | 10 |

{{ __('trans.new_here') }}

11 |
12 | {{ __('trans.sign_up_title') }} 13 |
14 | 15 |
16 | {{ csrf_field() }} 17 | 18 |
19 | 20 |
21 | 22 |
23 | 24 |
25 | 26 |
27 | 28 |
29 |
30 | 31 |
32 |
33 | 34 |
35 | 36 |
37 | 40 |
41 |
42 | {{ __('trans.have_account') }} 43 | {{ __('trans.login') }} 44 |
45 |
46 | @endsection 47 | 48 | @section('footer') 49 | @parent 50 | 51 | @endsection -------------------------------------------------------------------------------- /src/Resource/views/user-management/department/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('user-management.master') 2 | 3 | @section('header') 4 | @parent 5 | 6 | @endsection 7 | 8 | @section('breadcrumb') 9 | @include('mekaeils-package.layouts.breadcrumb',[ 10 | 'pageTitle' => 'Create Department', 11 | 'lists' => [ 12 | [ 13 | 'link' => '#', 14 | 'name' => 'User Management', 15 | ], 16 | [ 17 | 'link' => 'admin.user_management.department.index', 18 | 'name' => 'Departments', 19 | ], 20 | [ 21 | 'link' => '#', 22 | 'name' => 'New Department', 23 | ] 24 | ] 25 | ]) 26 | @endsection 27 | 28 | @section('content') 29 |
30 |
31 |
32 | {{--

Create new permission

--}} 33 |
34 | {!! csrf_field() !!} 35 | 36 |
37 |
38 |
39 | 40 | 41 |
42 |
43 |
44 |
45 | 46 | 52 |
53 |
54 |
55 | 56 | 57 | Cancel 58 |
59 |
60 |
61 |
62 | 63 | @endsection 64 | 65 | 66 | @section('footer') 67 | @parent 68 | 69 | @endsection -------------------------------------------------------------------------------- /src/Resource/views/user-management/department/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('user-management.master') 2 | 3 | @section('header') 4 | @parent 5 | 6 | @endsection 7 | 8 | @section('breadcrumb') 9 | @include('mekaeils-package.layouts.breadcrumb',[ 10 | 'pageTitle' => 'Edit Department: '. $department->title, 11 | 'lists' => [ 12 | [ 13 | 'link' => '#', 14 | 'name' => 'User Management', 15 | ], 16 | [ 17 | 'link' => 'admin.user_management.department.index', 18 | 'name' => 'Departments', 19 | ], 20 | [ 21 | 'link' => '#', 22 | 'name' => 'Edit Department', 23 | ] 24 | ] 25 | ]) 26 | @endsection 27 | 28 | @section('content') 29 |
30 |
31 |
32 | {{--

Create new permission

--}} 33 |
34 | @method('PUT') 35 | {!! csrf_field() !!} 36 | 37 |
38 |
39 |
40 | 41 | 42 |
43 |
44 |
45 |
46 | 47 | 53 |
54 |
55 |
56 | 57 | 58 | Cancel 59 |
60 |
61 |
62 |
63 | 64 | @endsection 65 | 66 | 67 | @section('footer') 68 | @parent 69 | 70 | @endsection -------------------------------------------------------------------------------- /src/Resource/views/user-management/department/index.blade.php: -------------------------------------------------------------------------------- 1 | @extends('user-management.master') 2 | 3 | @section('header') 4 | @parent 5 | 6 | @endsection 7 | 8 | @section('breadcrumb') 9 | @include('mekaeils-package.layouts.breadcrumb',[ 10 | 'pageTitle' => 'Departments', 11 | 'lists' => [ 12 | [ 13 | 'link' => '#', 14 | 'name' => 'User Management', 15 | ], 16 | [ 17 | 'link' => '#', 18 | 'name' => 'Departments', 19 | ] 20 | ] 21 | ]) 22 | @endsection 23 | 24 | @section('content') 25 |
26 |
27 |
28 |
29 | 30 | 31 | new department 32 | 33 |

List of the departments

34 | 35 | 36 | 37 | 38 | 41 | 44 | 47 | 50 | 51 | 52 | 53 | @foreach ($departments as $item) 54 | 55 | 58 | 61 | 64 | 73 | 74 | @endforeach 75 | 76 |
39 | # 40 | 42 | Title 43 | 45 | Parent 46 | 48 | Actions 49 |
56 | {{ $item->id }} 57 | 59 | {{ $item->title }} 60 | 62 | {{ $item->parent ? $item->parent->title : '----' }} 63 | 65 | Edit 66 | 67 |
68 | @method('DELETE') 69 | {{ csrf_field() }} 70 | 71 |
72 |
77 |
78 |
79 |
80 |
81 | @endsection 82 | 83 | 84 | @section('footer') 85 | @parent 86 | 87 | @endsection -------------------------------------------------------------------------------- /src/Resource/views/user-management/master.blade.php: -------------------------------------------------------------------------------- 1 | @include('mekaeils-package.layouts.header') 2 | 3 |
4 | 5 | @include('mekaeils-package.layouts.top-nav') 6 | 7 | 8 | 9 |
10 | 11 | @include('user-management.side-nav') 12 | 13 | 14 |
15 |
16 | @yield('breadcrumb') 17 | 18 | @include('mekaeils-package.layouts.alert') 19 | 20 | @yield('content') 21 |
22 | 23 |
24 |
25 | Laravel User Management Package By Mekaeil Andisheh. 26 | Theme By Bootstrap Dash. All rights reserved. 27 | Hand-crafted & made with 28 |
29 |
30 | 31 |
32 | 33 |
34 |
35 | 36 | @include('mekaeils-package.layouts.footer') -------------------------------------------------------------------------------- /src/Resource/views/user-management/permission/create.blade.php: -------------------------------------------------------------------------------- 1 | @extends('user-management.master') 2 | 3 | @section('header') 4 | @parent 5 | 6 | @endsection 7 | 8 | @section('breadcrumb') 9 | @include('mekaeils-package.layouts.breadcrumb',[ 10 | 'pageTitle' => 'Create New Permission', 11 | 'lists' => [ 12 | [ 13 | 'link' => '#', 14 | 'name' => 'User Management', 15 | ], 16 | [ 17 | 'link' => 'admin.user_management.permission.index', 18 | 'name' => 'Permission', 19 | ], 20 | [ 21 | 'link' => '#', 22 | 'name' => 'New permission', 23 | ] 24 | ] 25 | ]) 26 | @endsection 27 | 28 | @section('content') 29 | 30 |
31 |
32 |
33 | {{--

Create new permission

--}} 34 |
35 | {!! csrf_field() !!} 36 | 37 |
38 |
39 |
40 | 41 | 42 |
43 |
44 |
45 |
46 | 47 | 48 |
49 |
50 |
51 |
52 |
53 |
54 | 55 | 56 |
57 |
58 |
59 |
60 | 61 | 64 |
65 |
66 |
67 |
68 | 69 | 70 |
71 | 72 | Cancel 73 |
74 |
75 |
76 |
77 | 78 | @endsection 79 | 80 | 81 | @section('footer') 82 | @parent 83 | 84 | @endsection -------------------------------------------------------------------------------- /src/Resource/views/user-management/permission/edit.blade.php: -------------------------------------------------------------------------------- 1 | @extends('user-management.master') 2 | 3 | @section('header') 4 | @parent 5 | 6 | @endsection 7 | 8 | @section('breadcrumb') 9 | @include('mekaeils-package.layouts.breadcrumb',[ 10 | 'pageTitle' => 'Edit Permission', 11 | 'lists' => [ 12 | [ 13 | 'link' => '#', 14 | 'name' => 'User Management', 15 | ], 16 | [ 17 | 'link' => 'admin.user_management.permission.index', 18 | 'name' => 'Permissions', 19 | ], 20 | [ 21 | 'link' => '#', 22 | 'name' => 'Edit permission', 23 | ] 24 | ] 25 | ]) 26 | @endsection 27 | 28 | @section('content') 29 | 30 |
31 |
32 |
33 | {{--

Create new permission

--}} 34 |
35 | {{ method_field('PUT') }} 36 | {!! csrf_field() !!} 37 | 38 |
39 |
40 |
41 | 42 | 43 |
44 |
45 |
46 |
47 | 48 | 49 |
50 |
51 |
52 |
53 |
54 |
55 | 56 | 57 |
58 |
59 |
60 |
61 | 62 | 65 |
66 |
67 |
68 |
69 | 70 | 71 |
72 | 73 | Cancel 74 |
75 |
76 |
77 |
78 | 79 | @endsection 80 | 81 | 82 | @section('footer') 83 | @parent 84 | 85 | @endsection -------------------------------------------------------------------------------- /src/Resource/views/user-management/side-nav.blade.php: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /src/Tests/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MichaelAndish/LaravelUserManagement/9ae2558523a10a8a0a5ef6ec4a56d4f4d70d7bc7/src/Tests/.gitkeep -------------------------------------------------------------------------------- /src/UserManagement.php: -------------------------------------------------------------------------------- 1 | assertTrue(true); 13 | } 14 | 15 | } -------------------------------------------------------------------------------- /tests/bootstrap.php: -------------------------------------------------------------------------------- 1 |