Unverified Commit 179c24b1 authored by ruchit-viitorcloud's avatar ruchit-viitorcloud Committed by GitHub

Merge pull request #1 from viralsolani/master

Pull from master
parents b426643c b0204f64
# PHP CircleCI 2.0 configuration file
#
# Check https://circleci.com/docs/2.0/language-php/ for more details
#
version: 2
jobs:
build:
docker:
# specify the version you desire here
- image: circleci/php:7.1.5-browsers
# Specify service dependencies here if necessary
# CircleCI maintains a library of pre-built images
# documented at https://circleci.com/docs/2.0/circleci-images/
# - image: circleci/mysql:9.4
working_directory: ~/repo
steps:
- checkout
# Download and cache dependencies
- restore_cache:
keys:
- v1-dependencies-{{ checksum "composer.json" }}
# fallback to using the latest cache if no exact match is found
- v1-dependencies-
- run: composer install -n --prefer-dist
- save_cache:
paths:
- ./vendor
key: v1-dependencies-{{ checksum "composer.json" }}
# run tests!
- run: phpunit
APP_NAME=Laravel
APP_ENV=local
APP_KEY=base64:O+TrollIDwasHEREtMG9kBc+/Q32exQLusNVhnq558w=
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync
REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
PUSHER_APP_ID=
PUSHER_APP_KEY=
PUSHER_APP_SECRET=
...@@ -24,3 +24,4 @@ yarn-error.log ...@@ -24,3 +24,4 @@ yarn-error.log
phpunit.txt phpunit.txt
public/css public/css
public/js public/js
composer.lock
\ No newline at end of file
# Code of Conduct
## 1. Purpose
A primary goal of Laravel Adminpanel is to be inclusive to the largest number of contributors, with the most varied and diverse backgrounds possible. As such, we are committed to providing a friendly, safe and welcoming environment for all, regardless of gender, sexual orientation, ability, ethnicity, socioeconomic status, and religion (or lack thereof).
This code of conduct outlines our expectations for all those who participate in our community, as well as the consequences for unacceptable behavior.
We invite all those who participate in Laravel Adminpanel to help us create safe and positive experiences for everyone.
## 2. Open Source Citizenship
A supplemental goal of this Code of Conduct is to increase open source citizenship by encouraging participants to recognize and strengthen the relationships between our actions and their effects on our community.
Communities mirror the societies in which they exist and positive action is essential to counteract the many forms of inequality and abuses of power that exist in society.
If you see someone who is making an extra effort to ensure our community is welcoming, friendly, and encourages all participants to contribute to the fullest extent, we want to know.
## 3. Expected Behavior
The following behaviors are expected and requested of all community members:
* Participate in an authentic and active way. In doing so, you contribute to the health and longevity of this community.
* Exercise consideration and respect in your speech and actions.
* Attempt collaboration before conflict.
* Refrain from demeaning, discriminatory, or harassing behavior and speech.
* Be mindful of your surroundings and of your fellow participants. Alert community leaders if you notice a dangerous situation, someone in distress, or violations of this Code of Conduct, even if they seem inconsequential.
* Remember that community event venues may be shared with members of the public; please be respectful to all patrons of these locations.
## 4. Unacceptable Behavior
The following behaviors are considered harassment and are unacceptable within our community:
* Violence, threats of violence or violent language directed against another person.
* Sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory jokes and language.
* Posting or displaying sexually explicit or violent material.
* Posting or threatening to post other people’s personally identifying information ("doxing").
* Personal insults, particularly those related to gender, sexual orientation, race, religion, or disability.
* Inappropriate photography or recording.
* Inappropriate physical contact. You should have someone’s consent before touching them.
* Unwelcome sexual attention. This includes, sexualized comments or jokes; inappropriate touching, groping, and unwelcomed sexual advances.
* Deliberate intimidation, stalking or following (online or in person).
* Advocating for, or encouraging, any of the above behavior.
* Sustained disruption of community events, including talks and presentations.
## 5. Consequences of Unacceptable Behavior
Unacceptable behavior from any community member, including sponsors and those with decision-making authority, will not be tolerated.
Anyone asked to stop unacceptable behavior is expected to comply immediately.
If a community member engages in unacceptable behavior, the community organizers may take any action they deem appropriate, up to and including a temporary ban or permanent expulsion from the community without warning (and without refund in the case of a paid event).
## 6. Reporting Guidelines
If you are subject to or witness unacceptable behavior, or have any other concerns, please notify a community organizer as soon as possible. viral.solani@gmail.com.
Additionally, community organizers are available to help community members engage with local law enforcement or to otherwise help those experiencing unacceptable behavior feel safe. In the context of in-person events, organizers will also provide escorts as desired by the person experiencing distress.
## 7. Addressing Grievances
If you feel you have been falsely or unfairly accused of violating this Code of Conduct, you should notify Viral Solani with a concise description of your grievance. Your grievance will be handled in accordance with our existing governing policies.
## 8. Scope
We expect all community participants (contributors, paid or otherwise; sponsors; and other guests) to abide by this Code of Conduct in all community venues–online and in-person–as well as in all one-on-one communications pertaining to community business.
This code of conduct and its related procedures also applies to unacceptable behavior occurring outside the scope of community activities when such behavior has the potential to adversely affect the safety and well-being of community members.
## 9. Contact info
viral.solani@gmail.com
## 10. License and attribution
This Code of Conduct is distributed under a [Creative Commons Attribution-ShareAlike license](http://creativecommons.org/licenses/by-sa/3.0/).
Portions of text derived from the [Django Code of Conduct](https://www.djangoproject.com/conduct/) and the [Geek Feminism Anti-Harassment Policy](http://geekfeminism.wikia.com/wiki/Conference_anti-harassment/Policy).
Retrieved on November 22, 2016 from [http://citizencodeofconduct.org/](http://citizencodeofconduct.org/)
# laravel-adminpanel # laravel-adminpanel
[![License](https://img.shields.io/badge/License-MIT-red.svg)](https://github.com/viralsolani/laravel-adminpanel/blob/master/LICENSE.txtl) [![License](https://img.shields.io/badge/License-MIT-red.svg)](https://github.com/viralsolani/laravel-adminpanel/blob/master/LICENSE.txt)
[![StyleCI](https://styleci.io/repos/30171828/shield?style=plastic)](https://styleci.io/repos/105789824/shield?style=plastic)
## Introduction ## Introduction
* This is a laravel Admin Panel, based on [Rappasoft Laravel Boilerplate](https://github.com/rappasoft/laravel-5-boilerplate), with enhancemenets and many modules pre-made, just for you. * This is a laravel Admin Panel, based on [Rappasoft Laravel Boilerplate](https://github.com/rappasoft/laravel-5-boilerplate/releases/tag/4.5.7), with enhancemenets and many modules pre-made, just for you.
* The project is taken to Laravel 5.5 so we can develop from the latest Laravel. * The project is taken to Laravel 5.5 so we can develop from the latest Laravel.
## Features ## Features
...@@ -16,18 +17,71 @@ For Laravel 5 Boilerplate Features : [Features](https://github.com/rappasoft/lar ...@@ -16,18 +17,71 @@ For Laravel 5 Boilerplate Features : [Features](https://github.com/rappasoft/lar
* Email Template Module * Email Template Module
* Blog Module * Blog Module
* FAQ Module * FAQ Module
* API Boilerplate - Coming Soon.
Give your project a Head Start by using [laravel-adminpanel](https://github.com/viralsolani/laravel-adminpanel). Give your project a Head Start by using [laravel-adminpanel](https://github.com/viralsolani/laravel-adminpanel).
### How do I get set up? ## Installation
* After taking clone first create a database for the project. Please check the official laravel installation guide for server requirements before you start. [Official Documentation](https://laravel.com/docs/5.4/installation#installation)
* Rename the the .env.example file as .env and setup your enviornment configuration settings there e.g Database details.
* Run `composer install` command from the root directory.(For this command, make sure you have composer installed, https://getcomposer.org/download)
* Run `npm install` command from the root directory.(For this command, make sure you have npm installed, https://docs.npmjs.com/cli/install) Clone the repository
* Now run the commands `php artisan migrate` and then `php artisan db:seed`.
* Now run the commands `npm run prod` if on production environment or use `npm run dev` for development purposes. git clone https://github.com/viralsolani/laravel-adminpanel.git
* Run command `php artisan serve` and you can check website from `http://localhost:8000/`.
Switch to the repo folder
cd laravel-adminpanel
Copy the example env file and make the required configuration changes in the .env file
cp .env.example .env
Install all the dependencies using composer
composer install
Generate a new application key
php artisan key:generate
Generate a new JWT authentication secret key
php artisan jwt:secret
Run the database migrations (**Set the database connection in .env before migrating**)
php artisan migrate
Run the database seeders
php artisan db:seed
Install the javascript dependencies using npm
npm install
Compile the dependencies
npm run development
Start the local development server
php artisan serve
You can now access the server at http://localhost:8000
**TL;DR command list**
git clone https://github.com/viralsolani/laravel-adminpanel.git
cd laravel-adminpanel
cp .env.example .env
composer install
npm install
npm run development
php artisan key:generate
php artisan jwt:generate
## Issues ## Issues
......
<?php
/**
* Routes for : DummyModuleName
*/
@startNamespace
Route::group( ['namespace' => 'DummyModel'], function () {
Route::get('dummy_name', 'DummyController@index')->name('dummy_name.index');
@startCreateRoute::get('dummy_name/create', 'DummyController@create')->name('dummy_name.create');
Route::post('dummy_name', 'DummyController@store')->name('dummy_name.store');@endCreate
@startEditRoute::get('dummy_name/{dummy_argument_name}/edit', 'DummyController@edit')->name('dummy_name.edit');
Route::patch('dummy_name/{dummy_argument_name}', 'DummyController@update')->name('dummy_name.update');@endEdit
@startDeleteRoute::delete('dummy_name/{dummy_argument_name}', 'DummyController@destroy')->name('dummy_name.destroy');@endDelete
//For Datatable
Route::post('dummy_name/get', 'DummyTableController')->name('dummy_name.get');
});
@endNamespace@startWithoutNamespace
Route::get('dummy_name', 'DummyController@index')->name('dummy_name.index');
@startCreateRoute::get('dummy_name/create', 'DummyController@create')->name('dummy_name.create');
Route::post('dummy_name', 'DummyController@store')->name('dummy_name.store');@endCreate
@startEditRoute::get('dummy_name/{dummy_argument_name}/edit', 'DummyController@edit')->name('dummy_name.edit');
Route::patch('dummy_name/{dummy_argument_name}', 'DummyController@update')->name('dummy_name.update');@endEdit
@startDeleteRoute::delete('dummy_name/{dummy_argument_name}', 'DummyController@destroy')->name('dummy_name.destroy');@endDelete
//For Datatable
Route::post('dummy_name/get', 'DummyTableController')->name('dummy_name.get');
@endWithoutNamespace
<?php <?php
namespace App\Events\Backend\CMSPages; namespace App\Events\Backend\Pages;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
/** /**
* Class CMSPageDeleted. * Class PageCreated.
*/ */
class CMSPageDeleted class PageCreated
{ {
use SerializesModels; use SerializesModels;
/** /**
* @var * @var
*/ */
public $cmspages; public $page;
/** /**
* @param $cmspages * @param $page
*/ */
public function __construct($cmspages) public function __construct($page)
{ {
$this->cmspages = $cmspages; $this->page = $page;
} }
} }
<?php <?php
namespace App\Events\Backend\CMSPages; namespace App\Events\Backend\Pages;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
/** /**
* Class CMSPageCreated. * Class PageDeleted.
*/ */
class CMSPageCreated class PageDeleted
{ {
use SerializesModels; use SerializesModels;
/** /**
* @var * @var
*/ */
public $cmspages; public $page;
/** /**
* @param $cmspages * @param $page
*/ */
public function __construct($cmspages) public function __construct($page)
{ {
$this->cmspages = $cmspages; $this->page = $page;
} }
} }
<?php <?php
namespace App\Events\Backend\CMSPages; namespace App\Events\Backend\Pages;
use Illuminate\Queue\SerializesModels; use Illuminate\Queue\SerializesModels;
/** /**
* Class CMSPageUpdated. * Class PageUpdated.
*/ */
class CMSPageUpdated class PageUpdated
{ {
use SerializesModels; use SerializesModels;
/** /**
* @var * @var
*/ */
public $cmspages; public $page;
/** /**
* @param $cmspages * @param $page
*/ */
public function __construct($cmspages) public function __construct($page)
{ {
$this->cmspages = $cmspages; $this->page = $page;
} }
} }
<?php <?php
use App\Exceptions\GeneralException; use App\Exceptions\GeneralException;
use App\Helpers\uuid;
use App\Http\Utilities\SendEmail; use App\Http\Utilities\SendEmail;
use App\Models\Notification\Notification; use App\Models\Notification\Notification;
use App\Models\Settings\Setting; use App\Models\Settings\Setting;
use Carbon\Carbon as Carbon; use Carbon\Carbon as Carbon;
/**
* Henerate UUID.
*
* @return uuid
*/
function generateUuid()
{
return uuid::uuid4();
}
/* /*
* Global helpers file with misc functions. * Global helpers file with misc functions.
*/ */
...@@ -164,64 +175,6 @@ if (!function_exists('escapeSlashes')) { ...@@ -164,64 +175,6 @@ if (!function_exists('escapeSlashes')) {
} }
} }
if (!function_exists('get_array_contents')) {
function get_array_contents($arr)
{
$contents = '';
foreach ($arr as $key => $value) {
if (is_array($value)) {
$contents .= "\t\"$key\" => [\n";
$contents .= get_array_contents($value);
$contents .= "\t],\n";
} else {
$contents .= "\t\"$key\" => \"$value\",\n";
}
}
return $contents;
}
}
if (!function_exists('insert_into_array')) {
function insert_into_array(&$array, array $keys, $value)
{
$last = array_pop($keys);
foreach ($keys as $key) {
if (!array_key_exists($key, $array) ||
array_key_exists($key, $array) && !is_array($array[$key])) {
$array[$key] = [];
}
$array = &$array[$key];
}
if (is_array($array[$last])) {
$array[$last] = array_merge($array[$last], $value);
} else {
$array[$last] = $value;
}
}
}
if (!function_exists('add_key_value_in_file')) {
function add_key_value_in_file($file_name, $new_key_value, $parent_keys = null)
{
$file_array = eval(str_replace('<?php', '', str_replace('?>', '', file_get_contents($file_name))));
if (!empty($parent_keys)) {
$parents = explode('.', $parent_keys);
insert_into_array($file_array, $parents, $new_key_value);
} else {
foreach ($new_key_value as $key => $value) {
$file_array[$key] = $value;
}
}
// dd($file_array);
$file_contents_new = "<?php\nreturn [\n";
$file_contents_new .= get_array_contents($file_array);
$file_contents_new .= '];';
// dd($file_contents_new);
file_put_contents($file_name, $file_contents_new);
}
}
if (!function_exists('getMenuItems')) { if (!function_exists('getMenuItems')) {
/** /**
* Converts items (json string) to array and return array. * Converts items (json string) to array and return array.
......
<?php
/**
* Represents a universally unique identifier (UUID), according to RFC 4122.
*
* This class provides the static methods `uuid3()`, `uuid4()`, and
* `uuid5()` for generating version 3, 4, and 5 UUIDs as specified in RFC 4122.
*
* If all you want is a unique ID, you should call `uuid4()`.
*
* @link http://tools.ietf.org/html/rfc4122
* @link http://en.wikipedia.org/wiki/Universally_unique_identifier
* @link http://www.php.net/manual/en/function.uniqid.php#94959
*/
namespace App\Helpers;
class uuid
{
/**
* When this namespace is specified, the name string is a fully-qualified domain name.
*
* @link http://tools.ietf.org/html/rfc4122#appendix-C
*/
const NAMESPACE_DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';
/**
* When this namespace is specified, the name string is a URL.
*
* @link http://tools.ietf.org/html/rfc4122#appendix-C
*/
const NAMESPACE_URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';
/**
* When this namespace is specified, the name string is an ISO OID.
*
* @link http://tools.ietf.org/html/rfc4122#appendix-C
*/
const NAMESPACE_OID = '6ba7b812-9dad-11d1-80b4-00c04fd430c8';
/**
* When this namespace is specified, the name string is an X.500 DN in DER or a text output format.
*
* @link http://tools.ietf.org/html/rfc4122#appendix-C
*/
const NAMESPACE_X500 = '6ba7b814-9dad-11d1-80b4-00c04fd430c8';
/**
* The nil UUID is special form of UUID that is specified to have all 128 bits set to zero.
*
* @link http://tools.ietf.org/html/rfc4122#section-4.1.7
*/
const NIL = '00000000-0000-0000-0000-000000000000';
private static function getBytes($uuid)
{
if (!self::isValid($uuid)) {
throw new InvalidArgumentException('Invalid UUID string: '.$uuid);
}
// Get hexadecimal components of UUID
$uhex = str_replace([
'urn:',
'uuid:',
'-',
'{',
'}',
], '', $uuid);
// Binary Value
$ustr = '';
// Convert UUID to bits
for ($i = 0; $i < strlen($uhex); $i += 2) {
$ustr .= chr(hexdec($uhex[$i].$uhex[$i + 1]));
}
return $ustr;
}
private static function uuidFromHash($hash, $version)
{
return sprintf('%08s-%04s-%04x-%04x-%12s',
// 32 bits for "time_low"
substr($hash, 0, 8),
// 16 bits for "time_mid"
substr($hash, 8, 4),
// 16 bits for "time_hi_and_version",
// four most significant bits holds version number
(hexdec(substr($hash, 12, 4)) & 0x0fff) | $version << 12,
// 16 bits, 8 bits for "clk_seq_hi_res",
// 8 bits for "clk_seq_low",
// two most significant bits holds zero and one for variant DCE1.1
(hexdec(substr($hash, 16, 4)) & 0x3fff) | 0x8000,
// 48 bits for "node"
substr($hash, 20, 12));
}
/**
* Generate a version 3 UUID based on the MD5 hash of a namespace identifier
* (which is a UUID) and a name (which is a string).
*
* @param string $namespace The UUID namespace in which to create the named UUID
* @param string $name The name to create a UUID for
*
* @return string
*/
public static function uuid3($namespace, $name)
{
$nbytes = self::getBytes($namespace);
// Calculate hash value
$hash = md5($nbytes.$name);
return self::uuidFromHash($hash, 3);
}
/**
* Generate a version 4 (random) UUID.
*
* @return string
*/
public static function uuid4()
{
$bytes = function_exists('random_bytes') ? random_bytes(16) : openssl_random_pseudo_bytes(16);
$hash = bin2hex($bytes);
return self::uuidFromHash($hash, 4);
}
/**
* Generate a version 5 UUID based on the SHA-1 hash of a namespace
* identifier (which is a UUID) and a name (which is a string).
*
* @param string $namespace The UUID namespace in which to create the named UUID
* @param string $name The name to create a UUID for
*
* @return string
*/
public static function uuid5($namespace, $name)
{
$nbytes = self::getBytes($namespace);
// Calculate hash value
$hash = sha1($nbytes.$name);
return self::uuidFromHash($hash, 5);
}
/**
* Check if a string is a valid UUID.
*
* @param string $uuid The string UUID to test
*
* @return bool
*/
public static function isValid($uuid)
{
return preg_match('/^(urn:)?(uuid:)?(\{)?[0-9a-f]{8}\-?[0-9a-f]{4}\-?[0-9a-f]{4}\-?[0-9a-f]{4}\-?[0-9a-f]{12}(?(3)\}|)$/i', $uuid) === 1;
}
/**
* Check if two UUIDs are equal.
*
* @param string $uuid1 The first UUID to test
* @param string $uuid2 The second UUID to test
*
* @return bool
*/
public static function equals($uuid1, $uuid2)
{
return self::getBytes($uuid1) === self::getBytes($uuid2);
}
}
...@@ -15,6 +15,4 @@ require __DIR__.'/Blog_Category.php'; ...@@ -15,6 +15,4 @@ require __DIR__.'/Blog_Category.php';
require __DIR__.'/Blog_Tag.php'; require __DIR__.'/Blog_Tag.php';
require __DIR__.'/Blog_Management.php'; require __DIR__.'/Blog_Management.php';
require __DIR__.'/Faqs.php'; require __DIR__.'/Faqs.php';
require __DIR__.'/Module.php';
require __DIR__.'/Menu.php';
require __DIR__.'/LogViewer.php'; require __DIR__.'/LogViewer.php';
<?php
Breadcrumbs::register('admin.menus.index', function ($breadcrumbs) {
$breadcrumbs->parent('admin.dashboard');
$breadcrumbs->push(trans('menus.backend.menus.management'), route('admin.menus.index'));
});
Breadcrumbs::register('admin.menus.create', function ($breadcrumbs) {
$breadcrumbs->parent('admin.menus.index');
$breadcrumbs->push(trans('menus.backend.menus.create'), route('admin.menus.create'));
});
Breadcrumbs::register('admin.menus.edit', function ($breadcrumbs, $id) {
$breadcrumbs->parent('admin.menus.index');
$breadcrumbs->push(trans('menus.backend.menus.edit'), route('admin.menus.edit', $id));
});
<?php
Breadcrumbs::register('admin.modules.index', function ($breadcrumbs) {
$breadcrumbs->parent('admin.dashboard');
$breadcrumbs->push(trans('menus.backend.modules.management'), route('admin.modules.index'));
});
Breadcrumbs::register('admin.modules.create', function ($breadcrumbs) {
$breadcrumbs->parent('admin.modules.index');
$breadcrumbs->push(trans('menus.backend.modules.create'), route('admin.modules.create'));
});
Breadcrumbs::register('admin.modules.edit', function ($breadcrumbs, $id) {
$breadcrumbs->parent('admin.modules.index');
$breadcrumbs->push(trans('menus.backend.modules.edit'), route('admin.modules.edit', $id));
});
<?php
namespace App\Http\Controllers\API\V1;
use App\Http\Controllers\Controller;
use Illuminate\Http\Response as IlluminateResponse;
use Response;
/**
* Base API Controller.
*/
class APIController extends Controller
{
/**
* default status code.
*
* @var int
*/
protected $statusCode = 200;
/**
* get the status code.
*
* @return statuscode
*/
public function getStatusCode()
{
return $this->statusCode;
}
/**
* set the status code.
*
* @param [type] $statusCode [description]
*
* @return mix
*/
public function setStatusCode($statusCode)
{
$this->statusCode = $statusCode;
return $this;
}
/**
* responsd not found.
*
* @param string $message
*
* @return mix
*/
public function respondNotFound($message = 'Not Found')
{
return $this->setStatusCode(IlluminateResponse::HTTP_NOT_FOUND)->respondWithError($message);
}
/**
* Respond with error.
*
* @param string $message
*
* @return mix
*/
public function respondInternalError($message = 'Internal Error')
{
return $this->setStatusCode('500')->respondWithError($message);
}
/**
* Respond.
*
* @param array $data
* @param array $headers
*
* @return mix
*/
public function respond($data, $headers = [])
{
return response()->json($data, $this->getStatusCode(), $headers);
}
/**
* respond with pagincation.
*
* @param Paginator $items
* @param array $data
*
* @return mix
*/
public function respondWithPagination($items, $data)
{
$data = array_merge($data, [
'paginator' => [
'total_count' => $items->total(),
'total_pages' => ceil($items->total() / $items->perPage()),
'current_page' => $items->currentPage(),
'limit' => $items->perPage(),
],
]);
return $this->respond($data);
}
/**
* respond with error.
*
* @param $message
*
* @return mix
*/
public function respondWithError($message)
{
return $this->respond([
'error' => [
'message' => $message,
'status_code' => $this->getStatusCode(),
],
]);
}
/**
* Respond Created.
*
* @param string $message
*
* @return mix
*/
public function respondCreated($message)
{
return $this->setStatusCode(201)->respond([
'message' => $message,
]);
}
/**
* Throw Validation.
*
* @param string $message
*
* @return mix
*/
public function throwValidation($message)
{
return $this->setStatusCode(422)
->respondWithError($message);
}
}
<?php
namespace App\Http\Controllers\Api\V1;
use App\Models\Access\User\User;
use App\Notifications\Activated;
use App\Notifications\Activation;
use App\Notifications\PasswordReset;
use App\Notifications\PasswordResetted;
use Illuminate\Http\Request;
use JWTAuth;
use Tymon\JWTAuth\Exceptions\JWTException;
use Validator;
/**
* AuthController.
*/
class AuthController extends APIController
{
/**
* Authenticate User.
*
* @param Request $request
*
* @return \Illuminate\Http\JsonResponse
*/
public function authenticate(Request $request)
{
$credentials = $request->only('email', 'password');
try {
if (!$token = JWTAuth::attempt($credentials)) {
return $this->throwValidation('Invalid Credentials! Please try again.');
}
} catch (JWTException $e) {
return $this->respondInternalError('This is something wrong. Please try again!');
}
$user = User::whereEmail(request('email'))->first();
if ($user->status != 1) {
return $this->throwValidation('Your account hasn\'t been activated. Please check your email & activate account.');
}
return $this->respond([
'message' => 'You are successfully logged in!',
'token' => $token,
]);
}
/**
* Check if user is authenticated or not.
*
* @return \Illuminate\Http\JsonResponse
*/
public function check()
{
try {
JWTAuth::parseToken()->authenticate();
} catch (JWTException $e) {
return $this->respond([
'authenticated' => false,
]);
}
return $this->respond([
'authenticated' => true,
]);
}
/**
* Log Out.
*
* @return \Illuminate\Http\JsonResponse
*/
public function logout()
{
try {
$token = JWTAuth::getToken();
if ($token) {
JWTAuth::invalidate($token);
}
} catch (JWTException $e) {
return $this->respondInternalError('This is something wrong. Please try again!');
}
return $this->respond([
'message' => 'You are successfully logged out!',
]);
}
/**
* Register User.
*
* @param Request $request
*
* @return \Illuminate\Http\JsonResponse
*/
public function register(Request $request)
{
$validation = Validator::make($request->all(), [
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required|email|unique:users',
'password' => 'required|min:6',
'password_confirmation' => 'required|same:password',
]);
if ($validation->fails()) {
return $this->throwValidation($validation->messages()->first());
}
$user = User::create([
'first_name' => request('first_name'),
'last_name' => request('last_name'),
'email' => request('email'),
'status' => '0',
'password' => bcrypt(request('password')),
'country_id' => 1,
'state_id' => 1,
'city_id' => 1,
'zip_code' => 1,
'ssn' => 123456789,
'created_by' => 1,
]);
$user->confirmation_code = generateUuid();
$user->save();
$user->notify(new Activation($user));
return $this->respondCreated([
'You have registered successfully. Please check your email for activation!',
]);
}
/**
* Activate User.
*
* @param $activation_token [description]
*
* @return \Illuminate\Http\JsonResponse
*/
public function activate($activation_token)
{
$user = User::whereConfirmationCode($activation_token)->first();
if (!$user) {
return $this->throwValidation('Invalid activation token!');
}
if ($user->status == 1) {
return $this->throwValidation('Your account has already been activated!');
}
$user->confirmed = 1;
$user->status = 1;
$user->save();
$user->notify(new Activated($user));
return $this->respond([
'message' => 'Your account has been activated!',
]);
}
public function password(Request $request)
{
$validation = Validator::make($request->all(), [
'email' => 'required|email',
]);
if ($validation->fails()) {
return response()->json(['message' => $validation->messages()->first()], 422);
}
$user = User::whereEmail(request('email'))->first();
if (!$user) {
return response()->json(['message' => 'We couldn\'t found any user with this email. Please try again!'], 422);
}
$token = generateUuid();
\DB::table('password_resets')->insert([
'email' => request('email'),
'token' => $token,
]);
$user->notify(new PasswordReset($user, $token));
return response()->json(['message' => 'We have sent reminder email. Please check your inbox!']);
}
public function validatePasswordReset(Request $request)
{
$validate_password_request = \DB::table('password_resets')->where('token', '=', request('token'))->first();
if (!$validate_password_request) {
return response()->json(['message' => 'Invalid password reset token!'], 422);
}
if (date('Y-m-d H:i:s', strtotime($validate_password_request->created_at.'+30 minutes')) < date('Y-m-d H:i:s')) {
return response()->json(['message' => 'Password reset token is expired. Please request reset password again!'], 422);
}
return response()->json(['message' => '']);
}
public function reset(Request $request)
{
$validation = Validator::make($request->all(), [
'email' => 'required|email',
'password' => 'required|min:6',
'password_confirmation' => 'required|same:password',
]);
if ($validation->fails()) {
return response()->json(['message' => $validation->messages()->first()], 422);
}
$user = User::whereEmail(request('email'))->first();
if (!$user) {
return response()->json(['message' => 'We couldn\'t found any user with this email. Please try again!'], 422);
}
$validate_password_request = \DB::table('password_resets')->where('email', '=', request('email'))->where('token', '=', request('token'))->first();
if (!$validate_password_request) {
return response()->json(['message' => 'Invalid password reset token!'], 422);
}
if (date('Y-m-d H:i:s', strtotime($validate_password_request->created_at.'+30 minutes')) < date('Y-m-d H:i:s')) {
return response()->json(['message' => 'Password reset token is expired. Please request reset password again!'], 422);
}
$user->password = bcrypt(request('password'));
$user->save();
$user->notify(new PasswordResetted($user));
return response()->json(['message' => 'Your password has been reset. Please login again!']);
}
public function changePassword(Request $request)
{
if (env('IS_DEMO')) {
return response()->json(['message' => 'You are not allowed to perform this action in this mode.'], 422);
}
$validation = Validator::make($request->all(), [
'current_password' => 'required',
'new_password' => 'required|confirmed|different:current_password|min:6',
'new_password_confirmation' => 'required|same:new_password',
]);
if ($validation->fails()) {
return response()->json(['message' => $validation->messages()->first()], 422);
}
$user = JWTAuth::parseToken()->authenticate();
if (!\Hash::check(request('current_password'), $user->password)) {
return response()->json(['message' => 'Old password does not match! Please try again!'], 422);
}
$user->password = bcrypt(request('new_password'));
$user->save();
return response()->json(['message' => 'Your password has been changed successfully!']);
}
}
<?php
namespace App\Api\V1\Controllers;
use App\Http\Controllers\Controller;
use App\Repositories\Api\CmsPage\CmsPageRepository;
class CmsPageController extends Controller
{
public function __construct(CmsPageRepository $cmsgpage)
{
$this->cmsgpage = $cmsgpage;
}
public function showCmsPage($page_slug)
{
$result = $this->cmsgpage->findBySlug($page_slug);
return response()
->json([
'status' => 'ok',
'data' => $result,
]);
}
}
<?php
namespace App\Api\V1\Controllers;
use App\Api\V1\Requests\ForgotPasswordRequest;
use App\Http\Controllers\Controller;
use App\Mail\ForgotPasswordMail;
use App\Repositories\Api\User\PasswordResetRepository;
use App\Repositories\Api\User\UserRepository;
use Carbon\Carbon;
use Illuminate\Support\Facades\Password;
use Symfony\Component\HttpKernel\Exception\HttpException;
/**
* Class ForgotPasswordController.
*/
class ForgotPasswordController extends Controller
{
/**
* @var UserRepository
*/
protected $user;
/**
* ForgotPasswordController constructor.
*
* @param UserRepository $user
*/
public function __construct(UserRepository $user, PasswordResetRepository $passwordreset)
{
$this->user = $user;
$this->passwordreset = $passwordreset;
}
/**
* Recovery password api.
*/
public function forgotpassword(ForgotPasswordRequest $request)
{
$check_user = $this->user->checkUser($request->get('email'));
if (!(empty($check_user))) {
$otp = $this->user->generateOTP();
$attributes = [
'email' => $request->get('email'),
'token' => $otp,
'created_at' => Carbon::now(),
];
$check_reset = $this->passwordreset->getByEmail($request->get('email'));
if (empty($check_reset)) {
$token = $this->passwordreset->create($attributes);
} else {
$token = $this->passwordreset->update($attributes);
}
$forgot_mail = \Mail::to($request->get('email'))->send(new ForgotPasswordMail($otp));
return response()->json([
'status' => 'ok',
'data' => ['token' => $otp],
], 200);
}
throw new HttpException(500, trans('validation.api.forgotpassword.email_not_valid'));
}
}
<?php
namespace App\Api\V1\Controllers;
use App\Api\V1\Requests\LoginRequest;
use App\http\Controllers\Controller;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
use Tymon\JWTAuth\Exceptions\JWTException;
use Tymon\JWTAuth\JWTAuth;
/**
* Class LoginController.
*/
class LoginController extends Controller
{
/*
* Login api for user
*/
public function login(LoginRequest $request, JWTAuth $JWTAuth)
{
$credentials = [
'email' => $request->email,
'password' => $request->password,
];
try {
/**
* check credentials valid or not.
*/
$token = $JWTAuth->attempt($credentials);
if (!$token) {
throw new AccessDeniedHttpException(trans('validation.api.login.username_password_didnt_match'));
}
} catch (JWTException $e) {
throw new HttpException(500);
}
return response()
->json([
'status' => 'ok',
'token' => $token,
]);
}
}
<?php
namespace App\Api\V1\Controllers;
use App\Api\V1\Requests\ConfirmAccountRequest;
use App\Api\V1\Requests\RegisterRequest;
use App\Http\Controllers\Controller;
use App\Repositories\Api\User\UserRepository;
use Symfony\Component\HttpKernel\Exception\HttpException;
/**
* Class RegisterController.
*/
class RegisterController extends Controller
{
/**
* @var UserRepository
*/
protected $user;
/**
* RegisterController constructor.
*
* @param UserRepository $user
*/
public function __construct(UserRepository $user)
{
$this->user = $user;
}
/*
* Register api.
*/
public function Register(RegisterRequest $request)
{
$user = $this->user->create($request->all());
return response()
->json([
'status' => 'ok',
]);
}
/*
* Confirm account api
*/
public function confirmAccount(ConfirmAccountRequest $request)
{
$user = $this->user->checkUser($request->get('email'));
if (!(empty($user))) {
if ($user[0]['confirmation_code'] != '') {
if (md5($request->get('otp')) == $user[0]['confirmation_code']) {
$checkconfirmation = $this->user->checkconfirmation($request->get('email'));
if ($checkconfirmation[0]['confirmed'] == 0) {
$confirmuser = $this->user->confirmUser($request->get('email'));
} else {
throw new HttpException(500, trans('validation.api.confirmaccount.already_confirmed'));
}
} else {
throw new HttpException(500, trans('validation.api.confirmaccount.invalid_otp'));
}
}
} else {
throw new HttpException(500, trans('validation.api.confirmaccount.invalid_email'));
}
return response()
->json([
'status' => 'ok',
]);
}
}
<?php
namespace App\Api\V1\Controllers;
use App\Api\V1\Requests\ResetPasswordRequest;
use App\Http\Controllers\Controller;
use App\Repositories\Api\User\PasswordResetRepository;
use App\Repositories\Api\User\UserRepository;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Password;
use Symfony\Component\HttpKernel\Exception\HttpException;
/**
* Class ResetPasswordController.
*/
class ResetPasswordController extends Controller
{
/**
* @var UserRepository
*/
protected $user;
/**
* ResetPasswordController constructor.
*
* @param UserRepository $user
*/
public function __construct(UserRepository $user, PasswordResetRepository $passwordreset)
{
$this->user = $user;
$this->passwordreset = $passwordreset;
}
/**
* Resetpassword api.
*/
public function resetpassword(ResetPasswordRequest $request)
{
$check_user = $this->user->checkUser($request->get('email'));
if (!(empty($check_user))) {
$response = $this->passwordreset->checkUser($this->credentials($request));
if (!(empty($response))) {
$resetpassword = $this->user->resetpassword($this->credentials($request));
$remove_token = $this->passwordreset->delete($this->credentials($request));
return response()
->json([
'status' => 'ok',
]);
}
throw new HttpException(500, trans('validation.api.resetpassword.token_not_valid'));
}
throw new HttpException(500, trans('validation.api.resetpassword.email_not_valid'));
}
/**
* Get the password reset credentials from the request.
*
* @param ResetPasswordRequest $request
*
* @return array
*/
protected function credentials(ResetPasswordRequest $request)
{
return $request->all(
'email', 'password', 'password_confirmation', 'token'
);
}
}
<?php
namespace App\Api\V1\Controllers;
use App\http\Controllers\Controller;
use App\Repositories\Api\User\UserRepository;
use Dingo\Api\Routing\Helpers;
use Illuminate\Http\Request;
use JWTAuth;
/**
* Class UserDetailController.
*/
class UserDetailController extends Controller
{
use Helpers;
/**
* @var UserRepository
*/
protected $user;
/**
* ResetPasswordController constructor.
*
* @param UserRepository $user
*/
public function __construct(UserRepository $user)
{
$this->user = $user;
}
/*
* User details api
*/
public function userDetails(Request $request)
{
$currentUser = JWTAuth::parseToken()->authenticate();
$user = $this->user->getById($currentUser->id);
return response()
->json([
'status' => 'ok',
'data' => $user,
]);
}
}
...@@ -10,10 +10,10 @@ use App\Http\Requests\Backend\Access\User\ManageUserRequest; ...@@ -10,10 +10,10 @@ use App\Http\Requests\Backend\Access\User\ManageUserRequest;
use App\Http\Requests\Backend\Access\User\ShowUserRequest; use App\Http\Requests\Backend\Access\User\ShowUserRequest;
use App\Http\Requests\Backend\Access\User\StoreUserRequest; use App\Http\Requests\Backend\Access\User\StoreUserRequest;
use App\Http\Requests\Backend\Access\User\UpdateUserRequest; use App\Http\Requests\Backend\Access\User\UpdateUserRequest;
use App\Models\Access\Permission\Permission;
use App\Models\Access\User\User; use App\Models\Access\User\User;
use App\Repositories\Backend\Access\Role\RoleRepository; use App\Repositories\Backend\Access\Role\RoleRepository;
use App\Repositories\Backend\Access\User\UserRepository; use App\Repositories\Backend\Access\User\UserRepository;
use Illuminate\Support\Facades\DB;
/** /**
* Class UserController. * Class UserController.
...@@ -47,7 +47,7 @@ class UserController extends Controller ...@@ -47,7 +47,7 @@ class UserController extends Controller
*/ */
public function index(ManageUserRequest $request) public function index(ManageUserRequest $request)
{ {
return view('backend.access.index'); return view('backend.access.users.index');
} }
/** /**
...@@ -57,8 +57,9 @@ class UserController extends Controller ...@@ -57,8 +57,9 @@ class UserController extends Controller
*/ */
public function create(CreateUserRequest $request) public function create(CreateUserRequest $request)
{ {
return view('backend.access.create') return view('backend.access.users.create')->with([
->withRoles($this->roles->getAll()); 'roles' => $this->roles->getAll(),
]);
} }
/** /**
...@@ -68,7 +69,7 @@ class UserController extends Controller ...@@ -68,7 +69,7 @@ class UserController extends Controller
*/ */
public function store(StoreUserRequest $request) public function store(StoreUserRequest $request)
{ {
$this->users->create(['data' => $request->except('assignees_roles'), 'roles' => $request->all('assignees_roles')]); $this->users->create($request);
return redirect()->route('admin.access.user.index')->withFlashSuccess(trans('alerts.backend.users.created')); return redirect()->route('admin.access.user.index')->withFlashSuccess(trans('alerts.backend.users.created'));
} }
...@@ -81,7 +82,7 @@ class UserController extends Controller ...@@ -81,7 +82,7 @@ class UserController extends Controller
*/ */
public function show(User $user, ShowUserRequest $request) public function show(User $user, ShowUserRequest $request)
{ {
return view('backend.access.show') return view('backend.access.users.show')
->withUser($user); ->withUser($user);
} }
...@@ -93,15 +94,16 @@ class UserController extends Controller ...@@ -93,15 +94,16 @@ class UserController extends Controller
*/ */
public function edit(User $user, EditUserRequest $request) public function edit(User $user, EditUserRequest $request)
{ {
$userPermissions = DB::table('permission_user')->where('user_id', $user->id)->pluck('permission_id', 'permission_id')->toArray(); $permissions = Permission::getSelectData('display_name');
$permissions = DB::table('permissions')->pluck('display_name', 'id')->toArray(); $userPermissions = $user->permissions()->get()->pluck('id')->toArray();
ksort($userPermissions);
ksort($permissions); return view('backend.access.users.edit')->with([
'user' => $user,
return view('backend.access.edit', compact('userPermissions', 'permissions')) 'userRoles' => $user->roles->pluck('id')->all(),
->withUser($user) 'roles' => $this->roles->getAll(),
->withUserRoles($user->roles->pluck('id')->all()) 'userPermissions' => $userPermissions,
->withRoles($this->roles->getAll()); 'permissions' => $permissions,
]);
} }
/** /**
...@@ -112,7 +114,7 @@ class UserController extends Controller ...@@ -112,7 +114,7 @@ class UserController extends Controller
*/ */
public function update(User $user, UpdateUserRequest $request) public function update(User $user, UpdateUserRequest $request)
{ {
$this->users->update($user, ['data' => $request->except('assignees_roles'), 'roles' => $request->all('assignees_roles')]); $this->users->update($user, $request);
return redirect()->route('admin.access.user.index')->withFlashSuccess(trans('alerts.backend.users.updated')); return redirect()->route('admin.access.user.index')->withFlashSuccess(trans('alerts.backend.users.updated'));
} }
......
...@@ -34,7 +34,7 @@ class UserPasswordController extends Controller ...@@ -34,7 +34,7 @@ class UserPasswordController extends Controller
*/ */
public function edit(User $user, ManageUserRequest $request) public function edit(User $user, ManageUserRequest $request)
{ {
return view('backend.access.change-password') return view('backend.access.users.change-password')
->withUser($user); ->withUser($user);
} }
......
...@@ -35,7 +35,7 @@ class UserStatusController extends Controller ...@@ -35,7 +35,7 @@ class UserStatusController extends Controller
*/ */
public function getDeactivated(ManageDeactivatedRequest $request) public function getDeactivated(ManageDeactivatedRequest $request)
{ {
return view('backend.access.deactivated'); return view('backend.access.users.deactivated');
} }
/** /**
...@@ -45,7 +45,7 @@ class UserStatusController extends Controller ...@@ -45,7 +45,7 @@ class UserStatusController extends Controller
*/ */
public function getDeleted(ManageDeletedRequest $request) public function getDeleted(ManageDeletedRequest $request)
{ {
return view('backend.access.deleted'); return view('backend.access.users.deleted');
} }
/** /**
......
<?php
namespace App\Http\Controllers\Backend\CMSPages;
use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\CMSPages\CreateCMSPagesRequest;
use App\Http\Requests\Backend\CMSPages\DeleteCMSPagesRequest;
use App\Http\Requests\Backend\CMSPages\EditCMSPagesRequest;
use App\Http\Requests\Backend\CMSPages\ManageCMSPagesRequest;
use App\Http\Requests\Backend\CMSPages\StoreCMSPagesRequest;
use App\Http\Requests\Backend\CMSPages\UpdateCMSPagesRequest;
use App\Models\CMSPages\CMSPage;
use App\Repositories\Backend\CMSPages\CMSPagesRepository;
/**
* Class CMSPagesController.
*/
class CMSPagesController extends Controller
{
/**
* @var CMSPagesRepository
*/
protected $cmspages;
/**
* @param CMSPagesRepository $cmspages
*/
public function __construct(CMSPagesRepository $cmspages)
{
$this->cmspages = $cmspages;
}
/**
* @param ManageCMSPagesRequest $request
*
* @return mixed
*/
public function index(ManageCMSPagesRequest $request)
{
return view('backend.cmspages.index');
}
/**
* @param CreateCMSPagesRequest $request
*
* @return mixed
*/
public function create(CreateCMSPagesRequest $request)
{
return view('backend.cmspages.create');
}
/**
* @param StoreCMSPagesRequest $request
*
* @return mixed
*/
public function store(StoreCMSPagesRequest $request)
{
$this->cmspages->create($request->all());
return redirect()->route('admin.cmspages.index')->withFlashSuccess(trans('alerts.backend.cmspages.created'));
}
/**
* @param CMSPage $cmspage
* @param EditCMSPagesRequest $request
*
* @return mixed
*/
public function edit(CMSPage $cmspage, EditCMSPagesRequest $request)
{
return view('backend.cmspages.edit')
->withCmspage($cmspage);
}
/**
* @param CMSPage $cmspage
* @param EditCMSPagesRequest $request
*
* @return mixed
*/
public function update(CMSPage $cmspage, UpdateCMSPagesRequest $request)
{
$this->cmspages->update($cmspage, $request->all());
return redirect()->route('admin.cmspages.index')->withFlashSuccess(trans('alerts.backend.cmspages.updated'));
}
/**
* @param Permission $permission
* @param DeleteCMSPagesRequest $request
*
* @return mixed
*/
public function destroy(CMSPage $cmspage, DeleteCMSPagesRequest $request)
{
$this->cmspages->delete($cmspage);
return redirect()->route('admin.cmspages.index')->withFlashSuccess(trans('alerts.backend.cmspages.deleted'));
}
}
...@@ -6,8 +6,6 @@ use App\Http\Controllers\Controller; ...@@ -6,8 +6,6 @@ use App\Http\Controllers\Controller;
use App\Models\Access\Permission\Permission; use App\Models\Access\Permission\Permission;
use App\Models\Access\Role\Role; use App\Models\Access\Role\Role;
use App\Models\Access\User\User; use App\Models\Access\User\User;
use App\Models\Cities\City;
use App\Models\States\State;
use Illuminate\Http\Request; use Illuminate\Http\Request;
/** /**
...@@ -23,40 +21,6 @@ class DashboardController extends Controller ...@@ -23,40 +21,6 @@ class DashboardController extends Controller
return view('backend.dashboard'); return view('backend.dashboard');
} }
/**
* Used to get the states of default country.
*
* @param Request $request
*
* @return JSON
*/
public function getStates(Request $request)
{
$states = State::where('country_id', config('access.constants.default_country'))->pluck('state', 'id')->toArray();
return [
'status' => 'state',
'data' => $states,
];
}
/**
* Used to get the cities of selected state.
*
* @param Request $request
*
* @return JSON
*/
public function getCities(Request $request)
{
$cities = City::where('state_id', $request->stateId)->pluck('city', 'id')->toArray();
return [
'status' => 'city',
'data' => $cities,
];
}
/** /**
* Used to display form for edit profile. * Used to display form for edit profile.
* *
...@@ -64,7 +28,7 @@ class DashboardController extends Controller ...@@ -64,7 +28,7 @@ class DashboardController extends Controller
*/ */
public function editProfile(Request $request) public function editProfile(Request $request)
{ {
return view('backend.access.profile-edit') return view('backend.access.users.profile-edit')
->withLoggedInUser(access()->user()); ->withLoggedInUser(access()->user());
} }
......
<?php
namespace App\Http\Controllers\Backend\Menu;
use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\Menu\CreateMenuRequest;
use App\Http\Requests\Backend\Menu\DeleteMenuRequest;
use App\Http\Requests\Backend\Menu\EditMenuRequest;
use App\Http\Requests\Backend\Menu\ManageMenuRequest;
use App\Http\Requests\Backend\Menu\StoreMenuRequest;
use App\Http\Requests\Backend\Menu\UpdateMenuRequest;
use App\Models\Menu\Menu;
use App\Repositories\Backend\Menu\MenuRepository;
use Illuminate\Support\Facades\DB;
class MenuController extends Controller
{
/**
* @var MenuRepository
*/
protected $menu;
/**
* @param MenuRepository $menu
*/
public function __construct(MenuRepository $menu)
{
$this->menu = $menu;
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(ManageMenuRequest $request)
{
return view('backend.menus.index');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(CreateMenuRequest $request)
{
$types = [
'backend' => 'Backend',
'frontend' => 'Frontend',
];
$modules = DB::table('modules')->get();
return view('backend.menus.create')->withTypes($types)->withModules($modules);
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Http\Response
*/
public function store(StoreMenuRequest $request)
{
$this->menu->create($request->all());
return redirect()->route('admin.menus.index')->withFlashSuccess(trans('alerts.backend.menus.created'));
}
/**
* Display the specified resource.
*
* @param \App\Models\Menu\Menu $menu
*
* @return \Illuminate\Http\Response
*/
public function show()
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param \App\Models\Menu\Menu $menu
*
* @return \Illuminate\Http\Response
*/
public function edit(Menu $menu, EditMenuRequest $request)
{
$types = [
'backend' => 'Backend',
'frontend' => 'Frontend',
];
$modules = DB::table('modules')->get();
return view('backend.menus.edit')->withTypes($types)
->withMenu($menu)
->withModules($modules);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param \App\Models\Menu\Menu $menu
*
* @return \Illuminate\Http\Response
*/
public function update(Menu $menu, UpdateMenuRequest $request)
{
$this->menu->update($menu, $request->all());
return redirect()->route('admin.menus.index')->withFlashSuccess(trans('alerts.backend.menus.updated'));
}
/**
* Remove the specified resource from storage.
*
* @param \App\Models\Menu\Menu $menu
*
* @return \Illuminate\Http\Response
*/
public function destroy(Menu $menu, DeleteMenuRequest $request)
{
$this->menu->delete($menu);
return redirect()->route('admin.menus.index')->withFlashSuccess(trans('alerts.backend.menus.deleted'));
}
/**
* Get the form for modal popup.
*
* @return \Illuminate\Http\Response
*/
public function getForm($formName, CreateMenuRequest $request)
{
if (in_array($formName, ['_add_custom_url_form'])) {
return view('backend.menus.'.$formName);
}
return abort(404);
}
}
<?php
namespace App\Http\Controllers\Backend\Menu;
use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\Menu\ManageMenuRequest;
use App\Repositories\Backend\Menu\MenuRepository;
use Carbon\Carbon;
use Yajra\DataTables\Facades\DataTables;
/**
* Class MenuTableController.
*/
class MenuTableController extends Controller
{
/**
* @var MenuRepository
*/
protected $menus;
/**
* @param MenuRepository $menus
*/
public function __construct(MenuRepository $menus)
{
$this->menus = $menus;
}
/**
* @param ManageMenuRequest $request
*
* @return mixed
*/
public function __invoke(ManageMenuRequest $request)
{
return Datatables::of($this->menus->getForDataTable())
->escapeColumns(['name'])
->addColumn('type', function ($menus) {
return ucwords($menus->type);
})
->addColumn('created_at', function ($menus) {
return Carbon::parse($menus->created_at)->toDateTimeString();
})
->addColumn('updated_at', function ($menus) {
return Carbon::parse($menus->updated_at)->toDateTimeString();
})
->addColumn('actions', function ($menus) {
return $menus->action_buttons;
})
->make(true);
}
}
<?php
namespace App\Http\Controllers\Backend\Module;
use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\Modules\CreateModuleRequest;
use App\Http\Requests\Backend\Modules\ManageModuleRequest;
use App\Http\Requests\Backend\Modules\StoreModuleRequest;
use App\Http\Utilities\Generator;
use App\Models\Access\Permission\Permission;
use App\Models\Module\Module;
use App\Repositories\Backend\Module\ModuleRepository;
use Illuminate\Http\Request;
/**
* Class ModuleController.
*
* @author Vipul Basapati <basapativipulkumar@gmail.com | https://github.com/bvipul>
*/
class ModuleController extends Controller
{
public $repository;
public $generator;
public $event_namespace = 'app\\Events\\Backend\\';
/**
* Constructor.
*
* @param ModuleRepository $repository
*/
public function __construct(ModuleRepository $repository)
{
$this->repository = $repository;
$this->generator = new Generator();
}
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index(ManageModuleRequest $request)
{
return view('backend.modules.index');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create(CreateModuleRequest $request)
{
return view('backend.modules.create')
->with('model_namespace', $this->generator->getModelNamespace())
->with('request_namespace', $this->generator->getRequestNamespace())
->with('controller_namespace', $this->generator->getControllerNamespace())
->with('event_namespace', $this->event_namespace)
->with('repo_namespace', $this->generator->getRepoNamespace())
->with('route_path', $this->generator->getRoutePath())
->with('view_path', $this->generator->getViewPath());
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Http\Response
*/
public function store(StoreModuleRequest $request)
{
$this->generator->initialize($request->all());
$this->generator->createMigration();
$this->generator->createModel();
$this->generator->createRequests();
$this->generator->createRepository();
$this->generator->createController();
$this->generator->createTableController();
$this->generator->createRouteFiles();
$this->generator->insertToLanguageFiles();
$this->generator->createViewFiles();
$this->generator->createEvents();
//Creating the Module
$this->repository->create($request->all(), $this->generator->getPermissions());
return redirect()->route('admin.modules.index')->withFlashSuccess('Module Generated Successfully!');
}
/**
* Checking the path for a file if exists.
*
* @param Request $request
*/
public function checkNamespace(Request $request)
{
if (isset($request->path)) {
$path = $this->parseModel($request->path);
$path = base_path(trim(str_replace('\\', '/', $request->path)), '\\');
$path = str_replace('App', 'app', $path);
if (file_exists($path.'.php')) {
return response()->json((object) [
'type' => 'error',
'message' => 'File exists Already',
]);
} else {
return response()->json((object) [
'type' => 'success',
'message' => 'File can be generated at this location',
]);
}
} else {
return response()->json((object) [
'type' => 'error',
'message' => 'Please provide some value',
]);
}
}
/**
* Checking if the table exists.
*
* @param Request $request
*/
public function checkTable(Request $request)
{
if ($request->table) {
if (Schema::hasTable($request->table)) {
return response()->json((object) [
'type' => 'error',
'message' => 'Table exists Already',
]);
} else {
return response()->json((object) [
'type' => 'success',
'message' => 'Table Name Available',
]);
}
} else {
return response()->json((object) [
'type' => 'error',
'message' => 'Please provide some value',
]);
}
}
/**
* Checking if the table exists.
*
* @param Request $request
*/
public function checkRoute(Request $request)
{
if ($request->table) {
if (Schema::hasTable($request->table)) {
return response()->json((object) [
'type' => 'error',
'message' => 'Table exists Already',
]);
} else {
return response()->json((object) [
'type' => 'success',
'message' => 'Table Name Available',
]);
}
} else {
return response()->json((object) [
'type' => 'error',
'message' => 'Please provide some value',
]);
}
}
/**
* Get the fully-qualified model class name.
*
* @param string $model
*
* @return string
*/
public function parseModel($model)
{
if (preg_match('([^A-Za-z0-9_/\\\\])', $model)) {
throw new InvalidArgumentException('Name contains invalid characters.');
}
$model = trim(str_replace('/', '\\', $model), '\\');
return $model;
}
public function checkPermission(ManageModuleRequest $request)
{
$permission = $request->permission;
if ($permission) {
$per = Permission::where('name', $permission)->first();
if ($per) {
return response()->json((object) [
'type' => 'success',
'message' => 'Permission Exists',
]);
} else {
return response()->json((object) [
'type' => 'error',
'message' => 'Permission does not exists',
]);
}
} else {
return response()->json((object) [
'type' => 'error',
'message' => 'Please provide some value',
]);
}
}
}
<?php
namespace App\Http\Controllers\Backend\Module;
use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\Modules\ManageModuleRequest;
use App\Repositories\Backend\Module\ModuleRepository;
use Yajra\DataTables\Facades\DataTables;
class ModuleTableController extends Controller
{
/**
* @var ModuleRepository
*/
protected $module;
/**
* @param ModuleRepository $module
*/
public function __construct(ModuleRepository $module)
{
$this->module = $module;
}
/**
* @param ManageModuleRequest $request
*
* @return mixed
*/
public function __invoke(ManageModuleRequest $request)
{
return Datatables::of($this->module->getForDataTable())
->escapeColumns(['name', 'url', 'view_permission_id'])
->addColumn('created_by', function ($module) {
return $module->created_by;
})
->make(true);
}
}
<?php
namespace App\Http\Controllers\Backend\Pages;
use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\Pages\CreatePageRequest;
use App\Http\Requests\Backend\Pages\DeletePageRequest;
use App\Http\Requests\Backend\Pages\EditPageRequest;
use App\Http\Requests\Backend\Pages\ManagePageRequest;
use App\Http\Requests\Backend\Pages\StorePageRequest;
use App\Http\Requests\Backend\Pages\UpdatePageRequest;
use App\Models\Page\Page;
use App\Repositories\Backend\Pages\PagesRepository;
/**
* Class PagesController.
*/
class PagesController extends Controller
{
/**
* @var PagesRepository
*/
protected $pages;
/**
* @param PagesRepository $pages
*/
public function __construct(PagesRepository $pages)
{
$this->pages = $pages;
}
/**
* @param ManagePageRequest $request
*
* @return mixed
*/
public function index(ManagePageRequest $request)
{
return view('backend.pages.index');
}
/**
* @param CreatePageRequest $request
*
* @return mixed
*/
public function create(CreatePageRequest $request)
{
return view('backend.pages.create');
}
/**
* @param StorePageRequest $request
*
* @return mixed
*/
public function store(StorePageRequest $request)
{
$this->pages->create($request->all());
return redirect()->route('admin.pages.index')->withFlashSuccess(trans('alerts.backend.pages.created'));
}
/**
* @param Page $page
* @param EditPageRequest $request
*
* @return mixed
*/
public function edit(Page $page, EditPageRequest $request)
{
return view('backend.pages.edit')
->withCmspage($page);
}
/**
* @param Page $page
* @param UpdatePageRequest $request
*
* @return mixed
*/
public function update(Page $page, UpdatePageRequest $request)
{
$this->pages->update($page, $request->all());
return redirect()->route('admin.pages.index')->withFlashSuccess(trans('alerts.backend.pages.updated'));
}
/**
* @param Page $page
* @param DeletePageRequest $request
*
* @return mixed
*/
public function destroy(Page $page, DeletePageRequest $request)
{
$this->pages->delete($page);
return redirect()->route('admin.pages.index')->withFlashSuccess(trans('alerts.backend.pages.deleted'));
}
}
<?php <?php
namespace App\Http\Controllers\Backend\CMSPages; namespace App\Http\Controllers\Backend\Pages;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\CMSPages\ManageCMSPagesRequest; use App\Http\Requests\Backend\Pages\ManagePageRequest;
use App\Repositories\Backend\CMSPages\CMSPagesRepository; use App\Repositories\Backend\Pages\PagesRepository;
use Carbon\Carbon; use Carbon\Carbon;
use Yajra\DataTables\Facades\DataTables; use Yajra\DataTables\Facades\DataTables;
/** /**
* Class CMSPagesTableController. * Class PagesTableController.
*/ */
class CMSPagesTableController extends Controller class PagesTableController extends Controller
{ {
/** /**
* @var CMSPagesRepository * @var PagesRepository
*/ */
protected $cmspages; protected $pages;
/** /**
* @param CMSPagesRepository $cmspages * @param PagesRepository $pages
*/ */
public function __construct(CMSPagesRepository $cmspages) public function __construct(PagesRepository $pages)
{ {
$this->cmspages = $cmspages; $this->pages = $pages;
} }
/** /**
* @param ManageCMSPagesRequest $request * @param ManagePageRequest $request
* *
* @return mixed * @return mixed
*/ */
public function __invoke(ManageCMSPagesRequest $request) public function __invoke(ManagePageRequest $request)
{ {
return Datatables::of($this->cmspages->getForDataTable()) return Datatables::of($this->pages->getForDataTable())
->escapeColumns(['title']) ->escapeColumns(['title'])
->addColumn('status', function ($cmspages) { ->addColumn('status', function ($pages) {
if ($cmspages->status) { if ($pages->status) {
return '<span class="label label-success">Active</span>'; return '<span class="label label-success">Active</span>';
} }
return '<span class="label label-danger">Inactive</span>'; return '<span class="label label-danger">Inactive</span>';
}) })
->addColumn('created_at', function ($cmspages) { ->addColumn('created_at', function ($pages) {
return Carbon::parse($cmspages->created_at)->toDateString(); return Carbon::parse($pages->created_at)->toDateString();
}) })
->addColumn('updated_at', function ($cmspages) { ->addColumn('updated_at', function ($pages) {
return Carbon::parse($cmspages->updated_at)->toDateString(); return Carbon::parse($pages->updated_at)->toDateString();
}) })
->addColumn('actions', function ($cmspages) { ->addColumn('actions', function ($pages) {
return $cmspages->action_buttons; return $pages->action_buttons;
}) })
->make(true); ->make(true);
} }
......
...@@ -3,11 +3,8 @@ ...@@ -3,11 +3,8 @@
namespace App\Http\Controllers\Frontend; namespace App\Http\Controllers\Frontend;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Models\Cities\City;
use App\Models\Settings\Setting; use App\Models\Settings\Setting;
use App\Models\States\State;
use App\Repositories\Frontend\CMSPages\CMSPagesRepository; use App\Repositories\Frontend\CMSPages\CMSPagesRepository;
use Illuminate\Http\Request;
/** /**
* Class FrontendController. * Class FrontendController.
...@@ -33,42 +30,6 @@ class FrontendController extends Controller ...@@ -33,42 +30,6 @@ class FrontendController extends Controller
return view('frontend.macros'); return view('frontend.macros');
} }
/**
* Used to get the states of default country.
*
* @param Request $request
*
* @return JSON
*/
public function getStates(Request $request)
{
$states = State::where('country_id', config('access.constants.default_country'))
->pluck('state', 'id')->toArray();
return [
'status' => 'state',
'data' => $states,
];
}
/**
* Used to get the cities of selected state.
*
* @param Request $request
*
* @return JSON
*/
public function getCities(Request $request)
{
$cities = City::where('state_id', $request->stateId)->pluck('city', 'id')
->toArray();
return [
'status' => 'city',
'data' => $cities,
];
}
/** /**
* show cmspage by pageslug. * show cmspage by pageslug.
*/ */
......
...@@ -73,6 +73,8 @@ class Kernel extends HttpKernel ...@@ -73,6 +73,8 @@ class Kernel extends HttpKernel
*/ */
'access.routeNeedsRole' => \App\Http\Middleware\RouteNeedsRole::class, 'access.routeNeedsRole' => \App\Http\Middleware\RouteNeedsRole::class,
'access.routeNeedsPermission' => \App\Http\Middleware\RouteNeedsPermission::class, 'access.routeNeedsPermission' => \App\Http\Middleware\RouteNeedsPermission::class,
'jwt.auth' => \App\Http\Middleware\VerifyJWTToken::class, //'jwt.auth' => \App\Http\Middleware\VerifyJWTToken::class,
'jwt.auth' => \Tymon\JWTAuth\Middleware\GetUserFromToken::class,
'jwt.refresh' => \Tymon\JWTAuth\Middleware\RefreshToken::class,
]; ];
} }
...@@ -32,10 +32,6 @@ class StoreUserRequest extends Request ...@@ -32,10 +32,6 @@ class StoreUserRequest extends Request
'last_name' => 'required|max:255', 'last_name' => 'required|max:255',
'email' => ['required', 'email', 'max:255', Rule::unique('users')], 'email' => ['required', 'email', 'max:255', Rule::unique('users')],
'password' => 'required|min:6|confirmed', 'password' => 'required|min:6|confirmed',
'state_id' => 'required',
'city_id' => 'required',
'zip_code' => 'required|regex:/^[0-9]+$/',
'ssn' => 'required|regex:/^[0-9]+$/|max:9|min:9',
]; ];
} }
...@@ -47,12 +43,6 @@ class StoreUserRequest extends Request ...@@ -47,12 +43,6 @@ class StoreUserRequest extends Request
public function messages() public function messages()
{ {
return [ return [
'state_id.required' => 'The state field is required.',
'city_id.required' => 'The city field is required.',
'ssn.regex' => 'The SSN field must be 9 digits.',
'ssn.min' => 'The SSN field must be 9 digits.',
'ssn.max' => 'The SSN field must be 9 digits.',
'zip_code.regex' => 'The zip code field must be digit.',
]; ];
} }
} }
...@@ -30,10 +30,6 @@ class UpdateUserRequest extends Request ...@@ -30,10 +30,6 @@ class UpdateUserRequest extends Request
'email' => 'required|email', 'email' => 'required|email',
'first_name' => 'required', 'first_name' => 'required',
'last_name' => 'required', 'last_name' => 'required',
'state_id' => 'required',
'city_id' => 'required',
'zip_code' => 'required|regex:/^[0-9]+$/',
'ssn' => 'required|regex:/^[0-9]+$/|max:9|min:9',
]; ];
} }
...@@ -45,13 +41,6 @@ class UpdateUserRequest extends Request ...@@ -45,13 +41,6 @@ class UpdateUserRequest extends Request
public function messages() public function messages()
{ {
return [ return [
'state_id.required' => 'The state field is required.',
'city_id.required' => 'The city field is required.',
'ssn.regex' => 'The SSN field must be 9 digits.',
'ssn.min' => 'The SSN field must be 9 digits.',
'ssn.max' => 'The SSN field must be 9 digits.',
'zip_code.regex' => 'The zip code field must be digit.',
]; ];
} }
} }
<?php
namespace App\Http\Requests\Backend\CMSPages;
use App\Http\Requests\Request;
/**
* Class CreateCMSPagesRequest.
*/
class CreateCMSPagesRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return access()->allow('create-cms-pages');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
<?php
namespace App\Http\Requests\Backend\CMSPages;
use App\Http\Requests\Request;
/**
* Class DeleteCMSPagesRequest.
*/
class DeleteCMSPagesRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return access()->allow('delete-cms-pages');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
<?php
namespace App\Http\Requests\Backend\CMSPages;
use App\Http\Requests\Request;
/**
* Class EditCMSPagesRequest.
*/
class EditCMSPagesRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return access()->allow('edit-cms-pages');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
<?php
namespace App\Http\Requests\Backend\CMSPages;
use App\Http\Requests\Request;
/**
* Class ManageCMSPagesRequest.
*/
class ManageCMSPagesRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return access()->allow('view-cms-pages');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
<?php
namespace App\Http\Requests\Backend\Menu;
use App\Http\Requests\Request;
/**
* Class StoreMenuRequest.
*/
class StoreMenuRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return access()->allow('create-menu');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'type' => 'required',
];
}
}
<?php
namespace App\Http\Requests\Backend\Menu;
use App\Http\Requests\Request;
/**
* Class UpdateMenuRequest.
*/
class UpdateMenuRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return access()->allow('edit-menu');
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required',
'type' => 'required',
];
}
}
<?php
namespace App\Http\Requests\Backend\Modules;
use App\Http\Requests\Request;
/**
* Class CreateModuleRequest.
*/
class CreateModuleRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// return access()->allow('create-blog');
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
<?php
namespace App\Http\Requests\Backend\Modules;
use App\Http\Requests\Request;
/**
* Class DeleteModuleRequest.
*/
class DeleteModuleRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// return access()->allow('delete-blog');
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
<?php
namespace App\Http\Requests\Backend\Modules;
use App\Http\Requests\Request;
/**
* Class EditModuleRequest.
*/
class EditModuleRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// return access()->allow('edit-blog');
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
<?php
namespace App\Http\Requests\Backend\Modules;
use App\Http\Requests\Request;
/**
* Class ManageModuleRequest.
*/
class ManageModuleRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// return access()->allow('view-blog');
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
<?php
namespace App\Http\Requests\Backend\Modules;
use App\Http\Requests\Request;
/**
* Class StoreModuleRequest.
*/
class StoreModuleRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// return access()->allow('create-blog');
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|max:191|unique:modules',
'directory_name' => 'required',
'model_name' => 'required',
];
}
/**
* Get the validation message that apply to the request.
*
* @return array
*/
public function messages()
{
return [
'name.required' => 'Module Name field is required to be filled',
'name.max' => 'Module Name should not exceed 191 characters',
'name.unique' => 'Module Name is already taken',
'directory_name.required' => 'Directory Name field is required to be filled',
'model_name.required' => 'Model Name field is required to be filled',
];
}
}
<?php
namespace App\Http\Requests\Backend\Modules;
use App\Http\Requests\Request;
/**
* Class UpdateModuleRequest.
*/
class UpdateModuleRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
// return access()->allow('edit-blog');
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|max:191|unique:modules,name,'.$this->segment(3).',id',
'url' => 'required',
'view_permission_id' => 'required',
];
}
/**
* Get the validation message that apply to the request.
*
* @return array
*/
public function messages()
{
return [
];
}
}
<?php <?php
namespace App\Http\Requests\Backend\Menu; namespace App\Http\Requests\Backend\Pages;
use App\Http\Requests\Request; use App\Http\Requests\Request;
/** /**
* Class CreateMenuRequest. * Class CreatePageRequest.
*/ */
class CreateMenuRequest extends Request class CreatePageRequest extends Request
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
...@@ -16,7 +16,7 @@ class CreateMenuRequest extends Request ...@@ -16,7 +16,7 @@ class CreateMenuRequest extends Request
*/ */
public function authorize() public function authorize()
{ {
return access()->allow('create-menu'); return access()->allow('create-page');
} }
/** /**
......
<?php <?php
namespace App\Http\Requests\Backend\Menu; namespace App\Http\Requests\Backend\Pages;
use App\Http\Requests\Request; use App\Http\Requests\Request;
/** /**
* Class DeleteMenuRequest. * Class DeletePageRequest.
*/ */
class DeleteMenuRequest extends Request class DeletePageRequest extends Request
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
...@@ -16,7 +16,7 @@ class DeleteMenuRequest extends Request ...@@ -16,7 +16,7 @@ class DeleteMenuRequest extends Request
*/ */
public function authorize() public function authorize()
{ {
return access()->allow('delete-menu'); return access()->allow('delete-page');
} }
/** /**
......
<?php <?php
namespace App\Http\Requests\Backend\Menu; namespace App\Http\Requests\Backend\Pages;
use App\Http\Requests\Request; use App\Http\Requests\Request;
/** /**
* Class EditMenuRequest. * Class EditPageRequest.
*/ */
class EditMenuRequest extends Request class EditPageRequest extends Request
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
...@@ -16,7 +16,7 @@ class EditMenuRequest extends Request ...@@ -16,7 +16,7 @@ class EditMenuRequest extends Request
*/ */
public function authorize() public function authorize()
{ {
return access()->allow('edit-menu'); return access()->allow('edit-page');
} }
/** /**
......
<?php <?php
namespace App\Http\Requests\Backend\Menu; namespace App\Http\Requests\Backend\Pages;
use App\Http\Requests\Request; use App\Http\Requests\Request;
/** /**
* Class ManageMenuRequest. * Class ManagePageRequest.
*/ */
class ManageMenuRequest extends Request class ManagePageRequest extends Request
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
...@@ -16,7 +16,7 @@ class ManageMenuRequest extends Request ...@@ -16,7 +16,7 @@ class ManageMenuRequest extends Request
*/ */
public function authorize() public function authorize()
{ {
return access()->allow('view-menu'); return access()->allow('view-page');
} }
/** /**
......
<?php <?php
namespace App\Http\Requests\Backend\CMSPages; namespace App\Http\Requests\Backend\Pages;
use App\Http\Requests\Request; use App\Http\Requests\Request;
/** /**
* Class StoreCMSPagesRequest. * Class StorePageRequest.
*/ */
class StoreCMSPagesRequest extends Request class StorePageRequest extends Request
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
...@@ -16,7 +16,7 @@ class StoreCMSPagesRequest extends Request ...@@ -16,7 +16,7 @@ class StoreCMSPagesRequest extends Request
*/ */
public function authorize() public function authorize()
{ {
return access()->allow('create-cms-pages'); return access()->allow('create-page');
} }
/** /**
......
<?php <?php
namespace App\Http\Requests\Backend\CMSPages; namespace App\Http\Requests\Backend\Pages;
use App\Http\Requests\Request; use App\Http\Requests\Request;
/** /**
* Class UpdateCMSPagesRequest. * Class UpdatePageRequest.
*/ */
class UpdateCMSPagesRequest extends Request class UpdatePageRequest extends Request
{ {
/** /**
* Determine if the user is authorized to make this request. * Determine if the user is authorized to make this request.
...@@ -16,7 +16,7 @@ class UpdateCMSPagesRequest extends Request ...@@ -16,7 +16,7 @@ class UpdateCMSPagesRequest extends Request
*/ */
public function authorize() public function authorize()
{ {
return access()->allow('edit-cms-pages'); return access()->allow('edit-page');
} }
/** /**
......
...@@ -32,10 +32,6 @@ class RegisterRequest extends Request ...@@ -32,10 +32,6 @@ class RegisterRequest extends Request
'last_name' => 'required|max:255', 'last_name' => 'required|max:255',
'email' => ['required', 'email', 'max:255', Rule::unique('users')], 'email' => ['required', 'email', 'max:255', Rule::unique('users')],
'password' => 'required|min:8|confirmed|regex:"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$"', 'password' => 'required|min:8|confirmed|regex:"^(?=.*[a-z])(?=.*[A-Z])(?=.*\d).{8,}$"',
'state_id' => 'required',
'city_id' => 'required',
'zip_code' => 'required',
'ssn' => 'required',
'is_term_accept' => 'required', 'is_term_accept' => 'required',
'g-recaptcha-response' => 'required_if:captcha_status,true|captcha', 'g-recaptcha-response' => 'required_if:captcha_status,true|captcha',
]; ];
...@@ -48,8 +44,6 @@ class RegisterRequest extends Request ...@@ -48,8 +44,6 @@ class RegisterRequest extends Request
{ {
return [ return [
'g-recaptcha-response.required_if' => trans('validation.required', ['attribute' => 'captcha']), 'g-recaptcha-response.required_if' => trans('validation.required', ['attribute' => 'captcha']),
'state_id.required' => 'The state field is required.',
'city_id.required' => 'The city field is required.',
'password.regex' => 'Password must contain at least 1 uppercase letter and 1 number.', 'password.regex' => 'Password must contain at least 1 uppercase letter and 1 number.',
]; ];
} }
......
This diff is collapsed.
...@@ -9,7 +9,7 @@ namespace App\Http\Utilities; ...@@ -9,7 +9,7 @@ namespace App\Http\Utilities;
* *
* Notification class is a abstract class for send push notification in Android and iPhone mobile * Notification class is a abstract class for send push notification in Android and iPhone mobile
* *
* Author Sandip P. Joshi * Author Viral Solani
* *
* Version 1.0 * Version 1.0
* *
......
...@@ -49,8 +49,6 @@ class PushNotification ...@@ -49,8 +49,6 @@ class PushNotification
} }
/** /**
* Created By : Umang Soni
* Created at : 26/05/2017
* PushNotification for android. * PushNotification for android.
* *
* @param array $devicetoken * @param array $devicetoken
...@@ -88,8 +86,6 @@ class PushNotification ...@@ -88,8 +86,6 @@ class PushNotification
} }
/** /**
* Created By : Umang Soni
* Created at : 26/05/2017
* PushNotification for IOS. * PushNotification for IOS.
* *
* @param array $devicetoken * @param array $devicetoken
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
namespace App\Models\Access\PasswordReset; namespace App\Models\Access\PasswordReset;
use Illuminate\Database\Eloquent\Model; use App\Models\BaseModel;
/** /**
* Password reset table model. * Password reset table model.
*/ */
class PasswordReset extends Model class PasswordReset extends BaseModel
{ {
public $timestamps = false; public $timestamps = false;
protected $table = 'password_resets'; protected $table = 'password_resets';
......
...@@ -4,14 +4,14 @@ namespace App\Models\Access\Permission; ...@@ -4,14 +4,14 @@ namespace App\Models\Access\Permission;
use App\Models\Access\Permission\Traits\Attribute\PermissionAttribute; use App\Models\Access\Permission\Traits\Attribute\PermissionAttribute;
use App\Models\Access\Permission\Traits\Relationship\PermissionRelationship; use App\Models\Access\Permission\Traits\Relationship\PermissionRelationship;
use App\Models\BaseModel;
use App\Models\ModelTrait; use App\Models\ModelTrait;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* Class Permission. * Class Permission.
*/ */
class Permission extends Model class Permission extends BaseModel
{ {
use ModelTrait, use ModelTrait,
SoftDeletes, SoftDeletes,
......
...@@ -6,14 +6,14 @@ use App\Models\Access\Role\Traits\Attribute\RoleAttribute; ...@@ -6,14 +6,14 @@ use App\Models\Access\Role\Traits\Attribute\RoleAttribute;
use App\Models\Access\Role\Traits\Relationship\RoleRelationship; use App\Models\Access\Role\Traits\Relationship\RoleRelationship;
use App\Models\Access\Role\Traits\RoleAccess; use App\Models\Access\Role\Traits\RoleAccess;
use App\Models\Access\Role\Traits\Scope\RoleScope; use App\Models\Access\Role\Traits\Scope\RoleScope;
use App\Models\BaseModel;
use App\Models\ModelTrait; use App\Models\ModelTrait;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
/** /**
* Class Role. * Class Role.
*/ */
class Role extends Model class Role extends BaseModel
{ {
use RoleScope, use RoleScope,
ModelTrait, ModelTrait,
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
namespace App\Models\Access\User; namespace App\Models\Access\User;
use Illuminate\Database\Eloquent\Model; use App\Models\BaseModel;
/** /**
* Class SocialLogin. * Class SocialLogin.
*/ */
class SocialLogin extends Model class SocialLogin extends BaseModel
{ {
/** /**
* The database table used by the model. * The database table used by the model.
......
...@@ -3,9 +3,6 @@ ...@@ -3,9 +3,6 @@
namespace App\Models\Access\User\Traits\Relationship; namespace App\Models\Access\User\Traits\Relationship;
use App\Models\Access\User\SocialLogin; use App\Models\Access\User\SocialLogin;
use App\Models\Cities\City;
use App\Models\Countries\Country;
use App\Models\States\State;
use App\Models\System\Session; use App\Models\System\Session;
/** /**
...@@ -49,34 +46,4 @@ trait UserRelationship ...@@ -49,34 +46,4 @@ trait UserRelationship
{ {
return $this->hasMany(Session::class); return $this->hasMany(Session::class);
} }
/**
* Has-One relationship with state.
*
* @return mixed
*/
public function state()
{
return $this->hasOne(State::class, 'id', 'state_id');
}
/**
* Has-One relationship with cty.
*
* @return mixed
*/
public function city()
{
return $this->hasOne(City::class, 'id', 'city_id');
}
/**
* Has-One relationship with country.
*
* @return mixed
*/
public function country()
{
return $this->hasOne(Country::class, 'id', 'country_id');
}
} }
...@@ -89,7 +89,6 @@ trait UserAccess ...@@ -89,7 +89,6 @@ trait UserAccess
public function allow($nameOrId) public function allow($nameOrId)
{ {
/* /*
* Author : Vaishal Gandhi
* *
* Update for this function due to issue of user custom permission * Update for this function due to issue of user custom permission
*/ */
...@@ -117,7 +116,6 @@ trait UserAccess ...@@ -117,7 +116,6 @@ trait UserAccess
} }
/* /*
* Author : Vaishal Gandhi
* *
* below code is commented due to issue of user custom permisssion * below code is commented due to issue of user custom permisssion
* if this code is not commented then if user dont have permission of one module but role which is assigned to that user have that permission than allow() method return true * if this code is not commented then if user dont have permission of one module but role which is assigned to that user have that permission than allow() method return true
...@@ -271,4 +269,72 @@ trait UserAccess ...@@ -271,4 +269,72 @@ trait UserAccess
$this->detachRole($role); $this->detachRole($role);
} }
} }
/**
* Attach multiple Permissions to a user.
*
* @param mixed $permissions
*
* @return void
*/
public function attachPermissions($permissions)
{
foreach ($permissions as $permission) {
$this->attachPermission($permission);
}
}
/**
* Alias to eloquent many-to-many relation's attach() method.
*
* @param mixed $permission
*
* @return void
*/
public function attachPermission($permission)
{
if (is_object($permission)) {
$permission = $permission->getKey();
}
if (is_array($permission)) {
$permission = $permission['id'];
}
$this->permissions()->attach($permission);
}
/**
* Detach multiple permissions from current role.
*
* @param mixed $permissions
*
* @return void
*/
public function detachPermissions($permissions)
{
foreach ($permissions as $permission) {
$this->detachPermission($permission);
}
}
/**
* Detach permission form current User.
*
* @param object|array $permission
*
* @return void
*/
public function detachPermission($permission)
{
if (is_object($permission)) {
$permission = $permission->getKey();
}
if (is_array($permission)) {
$permission = $permission['id'];
}
$this->permissions()->detach($permission);
}
} }
...@@ -35,7 +35,17 @@ class User extends Authenticatable ...@@ -35,7 +35,17 @@ class User extends Authenticatable
* *
* @var array * @var array
*/ */
protected $fillable = ['first_name', 'last_name', 'email', 'password', 'address', 'country_id', 'state_id', 'city_id', 'zip_code', 'ssn', 'status', 'confirmation_code', 'confirmed', 'created_by']; protected $fillable = [
'first_name',
'last_name',
'email',
'password',
'status',
'confirmation_code',
'confirmed',
'created_by',
'updated_by',
];
/** /**
* The attributes that should be hidden for arrays. * The attributes that should be hidden for arrays.
......
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class BaseModel extends Model
{
/**
* Generate drop-down select data with basic IDs.
*
* @param null $id
* @param null $val
*
* @return array
*/
public static function getSelectData($field_name = 'name')
{
$collection = parent::all();
return self::getItems($collection, $field_name);
}
/**
* Generate items for drop-down select data with basic IDs.
*
* @param $collection
*
* @return array
*/
public static function getItems($collection, $field_name)
{
$items = [];
foreach ($collection as $model) {
$items[$model->id] = [
'id' => $model->id,
'name' => $model->$field_name,
'model' => $model,
];
}
foreach ($items as $id => $item) {
$items[$item['id']] = $item['name'];
}
return $items;
}
}
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
namespace App\Models\BlogCategories; namespace App\Models\BlogCategories;
use App\Models\BaseModel;
use App\Models\BlogCategories\Traits\Attribute\BlogCategoryAttribute; use App\Models\BlogCategories\Traits\Attribute\BlogCategoryAttribute;
use App\Models\BlogCategories\Traits\Relationship\BlogCategoryRelationship; use App\Models\BlogCategories\Traits\Relationship\BlogCategoryRelationship;
use App\Models\ModelTrait; use App\Models\ModelTrait;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
class BlogCategory extends Model class BlogCategory extends BaseModel
{ {
use ModelTrait, use ModelTrait,
SoftDeletes, SoftDeletes,
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
namespace App\Models\BlogMapCategories; namespace App\Models\BlogMapCategories;
use Illuminate\Database\Eloquent\Model; use App\Models\BaseModel;
class BlogMapCategory extends Model class BlogMapCategory extends BaseModel
{ {
/** /**
* The database table used by the model. * The database table used by the model.
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
namespace App\Models\BlogMapTags; namespace App\Models\BlogMapTags;
use Illuminate\Database\Eloquent\Model; use App\Models\BaseModel;
class BlogMapTag extends Model class BlogMapTag extends BaseModel
{ {
/** /**
* The database table used by the model. * The database table used by the model.
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
namespace App\Models\BlogTags; namespace App\Models\BlogTags;
use App\Models\BaseModel;
use App\Models\BlogTags\Traits\Attribute\BlogTagAttribute; use App\Models\BlogTags\Traits\Attribute\BlogTagAttribute;
use App\Models\BlogTags\Traits\Relationship\BlogTagRelationship; use App\Models\BlogTags\Traits\Relationship\BlogTagRelationship;
use App\Models\ModelTrait; use App\Models\ModelTrait;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
class BlogTag extends Model class BlogTag extends BaseModel
{ {
use ModelTrait, use ModelTrait,
SoftDeletes, SoftDeletes,
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
namespace App\Models\Blogs; namespace App\Models\Blogs;
use App\Models\BaseModel;
use App\Models\Blogs\Traits\Attribute\BlogAttribute; use App\Models\Blogs\Traits\Attribute\BlogAttribute;
use App\Models\Blogs\Traits\Relationship\BlogRelationship; use App\Models\Blogs\Traits\Relationship\BlogRelationship;
use App\Models\ModelTrait; use App\Models\ModelTrait;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
class Blog extends Model class Blog extends BaseModel
{ {
use ModelTrait, use ModelTrait,
SoftDeletes, SoftDeletes,
......
<?php
namespace App\Models\Cities;
use App\Models\Cities\Traits\Relationship\CityRelationship;
use Illuminate\Database\Eloquent\Model;
class City extends Model
{
use CityRelationship;
/**
* The database table used by the model.
*
* @var string
*/
protected $table;
public function __construct()
{
$this->table = config('access.cities_table');
}
}
<?php
namespace App\Models\Cities\Traits\Relationship;
use App\Models\States\State;
/**
* Class CityRelationship.
*/
trait CityRelationship
{
/**
* Cities belongs to relationship with state.
*/
public function state()
{
return $this->belongsTo(State::class);
}
}
<?php
namespace App\Models\Countries;
use Illuminate\Database\Eloquent\Model;
class Country extends Model
{
/**
* The database table used by the model.
*
* @var string
*/
protected $table;
public function __construct()
{
$this->table = config('access.countries_table');
}
}
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
namespace App\Models\EmailTemplatePlaceholders; namespace App\Models\EmailTemplatePlaceholders;
use Illuminate\Database\Eloquent\Model; use App\Models\BaseModel;
class EmailTemplatePlaceholder extends Model class EmailTemplatePlaceholder extends BaseModel
{ {
/** /**
* The database table used by the model. * The database table used by the model.
......
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
namespace App\Models\EmailTemplateTypes; namespace App\Models\EmailTemplateTypes;
use Illuminate\Database\Eloquent\Model; use App\Models\BaseModel;
class EmailTemplateType extends Model class EmailTemplateType extends BaseModel
{ {
/** /**
* The database table used by the model. * The database table used by the model.
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
namespace App\Models\EmailTemplates; namespace App\Models\EmailTemplates;
use App\Models\BaseModel;
use App\Models\EmailTemplates\Traits\Attribute\EmailTemplateAttribute; use App\Models\EmailTemplates\Traits\Attribute\EmailTemplateAttribute;
use App\Models\ModelTrait; use App\Models\ModelTrait;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
class EmailTemplate extends Model class EmailTemplate extends BaseModel
{ {
use ModelTrait, use ModelTrait,
SoftDeletes, SoftDeletes,
......
...@@ -2,12 +2,12 @@ ...@@ -2,12 +2,12 @@
namespace App\Models\Faqs; namespace App\Models\Faqs;
use App\Models\BaseModel;
use App\Models\Faqs\Traits\Attribute\FaqAttribute; use App\Models\Faqs\Traits\Attribute\FaqAttribute;
use App\Models\ModelTrait; use App\Models\ModelTrait;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
class Faq extends Model class Faq extends BaseModel
{ {
use ModelTrait, use ModelTrait,
SoftDeletes, SoftDeletes,
......
...@@ -2,14 +2,14 @@ ...@@ -2,14 +2,14 @@
namespace App\Models\History; namespace App\Models\History;
use App\Models\BaseModel;
use App\Models\History\Traits\Relationship\HistoryRelationship; use App\Models\History\Traits\Relationship\HistoryRelationship;
use Illuminate\Database\Eloquent\Model;
/** /**
* Class History * Class History
* package App. * package App.
*/ */
class History extends Model class History extends BaseModel
{ {
use HistoryRelationship; use HistoryRelationship;
......
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
namespace App\Models\History; namespace App\Models\History;
use Illuminate\Database\Eloquent\Model; use App\Models\BaseModel;
/** /**
* Class HistoryType * Class HistoryType
* package App. * package App.
*/ */
class HistoryType extends Model class HistoryType extends BaseModel
{ {
/** /**
* The database table used by the model. * The database table used by the model.
......
<?php
namespace App\Models\Menu;
use App\Models\Menu\Traits\Attribute\MenuAttribute;
use App\Models\ModelTrait;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class Menu extends Model
{
use ModelTrait,
SoftDeletes,
MenuAttribute {
// MenuAttribute::getEditButtonAttribute insteadof ModelTrait;
}
/**
* The database table used by the model.
*
* @var string
*/
protected $table;
public function __construct(array $attributes = [])
{
parent::__construct($attributes);
$this->table = config('access.menus_table');
}
}
<?php
namespace App\Models\Menu\Traits\Attribute;
/**
* Class MenuAttribute.
*/
trait MenuAttribute
{
/**
* @return string
*/
public function getActionButtonsAttribute()
{
return '<div class="btn-group action-btn">
'.$this->getEditButtonAttribute('edit-menu', 'admin.menus.edit').'
'.$this->getDeleteButtonAttribute('delete-menu', 'admin.menus.destroy').'
</div>';
}
}
<?php
namespace App\Models\Module;
use App\Models\Module\Traits\Attribute\ModuleAttribute;
use Illuminate\Database\Eloquent\Model;
class Module extends Model
{
use ModuleAttribute;
protected $table = 'modules';
protected $fillable = ['view_permission_id', 'name', 'url', 'created_by', 'updated_by'];
}
<?php
namespace App\Models\Module\Traits\Attribute;
/**
* Class ModuleAttribute.
*/
trait ModuleAttribute
{
/**
* @return string
*/
public function getEditButtonAttribute()
{
// if(access()->allow('edit-blog'))
// {
return '<a href="'.route('admin.modules.edit', $this).'" class="btn btn-flat btn-default">
<i data-toggle="tooltip" data-placement="top" title="Edit" class="fa fa-pencil"></i>
</a>';
// }
}
/**
* @return string
*/
public function getDeleteButtonAttribute()
{
// if(access()->allow('delete-blog'))
// {
return '<a href="'.route('admin.blogs.destroy', $this).'"
class="btn btn-flat btn-default" data-method="delete"
data-trans-button-cancel="'.trans('buttons.general.cancel').'"
data-trans-button-confirm="'.trans('buttons.general.crud.delete').'"
data-trans-title="'.trans('strings.backend.general.are_you_sure').'">
<i data-toggle="tooltip" data-placement="top" title="Delete" class="fa fa-trash"></i>
</a>';
// }
}
/**
* @return string
*/
public function getActionButtonsAttribute()
{
return '<div class="btn-group action-btn">'.
$this->getEditButtonAttribute().
// $this->getDeleteButtonAttribute().
'</div>';
}
}
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
namespace App\Models\Notification; namespace App\Models\Notification;
use Illuminate\Database\Eloquent\Model; use App\Models\BaseModel;
class Notification extends Model class Notification extends BaseModel
{ {
/** /**
* The database table used by the model. * The database table used by the model.
......
<?php <?php
namespace App\Models\CMSPages; namespace App\Models\Page;
use App\Models\CMSPages\Traits\Attribute\CMSPageAttribute; use App\Models\BaseModel;
use App\Models\ModelTrait; use App\Models\ModelTrait;
use Illuminate\Database\Eloquent\Model; use App\Models\Page\Traits\Attribute\PageAttribute;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
class CMSPage extends Model class Page extends BaseModel
{ {
use ModelTrait, use ModelTrait,
SoftDeletes, SoftDeletes,
CMSPageAttribute { PageAttribute {
// CMSPageAttribute::getEditButtonAttribute insteadof ModelTrait; // PageAttribute::getEditButtonAttribute insteadof ModelTrait;
} }
/** /**
......
<?php <?php
namespace App\Models\CMSPages\Traits\Attribute; namespace App\Models\Page\Traits\Attribute;
/** /**
* Class CMSPageAttribute. * Class PageAttribute.
*/ */
trait CMSPageAttribute trait PageAttribute
{ {
/** /**
* @return string * @return string
...@@ -13,8 +13,8 @@ trait CMSPageAttribute ...@@ -13,8 +13,8 @@ trait CMSPageAttribute
public function getActionButtonsAttribute() public function getActionButtonsAttribute()
{ {
return '<div class="btn-group action-btn"> return '<div class="btn-group action-btn">
'.$this->getEditButtonAttribute('edit-cms-pages', 'admin.cmspages.edit').' '.$this->getEditButtonAttribute('edit-cms-pages', 'admin.pages.edit').'
'.$this->getDeleteButtonAttribute('delete-cms-pages', 'admin.cmspages.destroy').' '.$this->getDeleteButtonAttribute('delete-cms-pages', 'admin.pages.destroy').'
</div>'; </div>';
} }
} }
...@@ -2,9 +2,9 @@ ...@@ -2,9 +2,9 @@
namespace App\Models\Settings; namespace App\Models\Settings;
use Illuminate\Database\Eloquent\Model; use App\Models\BaseModel;
class Setting extends Model class Setting extends BaseModel
{ {
/** /**
* The database table used by the model. * The database table used by the model.
......
<?php
namespace App\Models\States;
use App\Models\States\Traits\Relationship\StateRelationship;
use Illuminate\Database\Eloquent\Model;
class State extends Model
{
use StateRelationship;
/**
* The database table used by the model.
*
* @var string
*/
protected $table;
public function __construct()
{
$this->table = config('access.states_table');
}
}
<?php
namespace App\Models\States\Traits\Relationship;
use App\Models\Cities\City;
use App\Models\Countries\Country;
/**
* Class StateRelationship.
*/
trait StateRelationship
{
/**
* States belongs to relationship with country.
*/
public function country()
{
return $this->bolongsTo(Country::class);
}
/**
* States has many relationship with cities.
*/
public function cities()
{
return $this->hasMany(City::class);
}
}
...@@ -2,13 +2,13 @@ ...@@ -2,13 +2,13 @@
namespace App\Models\System; namespace App\Models\System;
use Illuminate\Database\Eloquent\Model; use App\Models\BaseModel;
/** /**
* Class Session * Class Session
* package App. * package App.
*/ */
class Session extends Model class Session extends BaseModel
{ {
/** /**
* The database table used by the model. * The database table used by the model.
......
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
class Activated extends Notification
{
use Queueable;
/**
* Create a new notification instance.
*
* @return void
*/
protected $user;
public function __construct($user)
{
$this->user = $user;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
*
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
*
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$url = url('/');
return (new MailMessage())
->greeting('Hello!')
->line('Your account has been activated.')
->line('Click on the below link to go to our application!')
->action('Proceed', $url)
->line('Thank you for using our application!');
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
*
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
class Activation extends Notification
{
use Queueable;
/**
* Create a new notification instance.
*
* @return void
*/
protected $user;
public function __construct($user)
{
$this->user = $user;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
*
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
*
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$url = url('/auth/'.$this->user->confirmation_code.'/activate');
return (new MailMessage())
->greeting('Hello!')
->line('Thank you for registering an account with us.')
->line('Click on the below link to verify your email!')
->action('Verify now!', $url)
->line('Thank you for using our application!');
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
*
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
class PasswordReset extends Notification
{
use Queueable;
/**
* Create a new notification instance.
*
* @return void
*/
protected $user;
protected $token;
public function __construct($user, $token)
{
$this->user = $user;
$this->token = $token;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
*
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
*
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$url = url('/password/reset/'.$this->token);
return (new MailMessage())
->greeting('Hello!')
->line('We have recevied password reset request from you!')
->line('Click on the below link to reset your password.')
->action('Reset Password', $url)
->line('If you haven\'t requested for password reset, please ignore this email.')
->line('Thank you!');
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
*
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}
<?php
namespace App\Notifications;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;
class PasswordResetted extends Notification
{
use Queueable;
/**
* Create a new notification instance.
*
* @return void
*/
protected $user;
public function __construct($user)
{
$this->user = $user;
}
/**
* Get the notification's delivery channels.
*
* @param mixed $notifiable
*
* @return array
*/
public function via($notifiable)
{
return ['mail'];
}
/**
* Get the mail representation of the notification.
*
* @param mixed $notifiable
*
* @return \Illuminate\Notifications\Messages\MailMessage
*/
public function toMail($notifiable)
{
$url = url('/');
return (new MailMessage())
->greeting('Hello!')
->line('Your password has been reset successfully!')
->line('Click on the below link to continue login.')
->action('Login', $url)
->line('If you haven\'t changed your password, please contact administrator.')
->line('Thank you!');
}
/**
* Get the array representation of the notification.
*
* @param mixed $notifiable
*
* @return array
*/
public function toArray($notifiable)
{
return [
//
];
}
}
...@@ -5,7 +5,6 @@ namespace App\Repositories\Api\CmsPage; ...@@ -5,7 +5,6 @@ namespace App\Repositories\Api\CmsPage;
use App\Exceptions\GeneralException; use App\Exceptions\GeneralException;
use App\Models\CMSPages\CMSPage; use App\Models\CMSPages\CMSPage;
use App\Repositories\BaseRepository; use App\Repositories\BaseRepository;
use Illuminate\Database\Eloquent\Model;
/** /**
* Class CmsPageRepository. * Class CmsPageRepository.
......
...@@ -4,7 +4,6 @@ namespace App\Repositories\Api\Role; ...@@ -4,7 +4,6 @@ namespace App\Repositories\Api\Role;
use App\Models\Access\Role\Role; use App\Models\Access\Role\Role;
use App\Repositories\BaseRepository; use App\Repositories\BaseRepository;
use Illuminate\Database\Eloquent\Model;
/** /**
* Class RoleRepository. * Class RoleRepository.
......
...@@ -4,7 +4,6 @@ namespace App\Repositories\Api\User; ...@@ -4,7 +4,6 @@ namespace App\Repositories\Api\User;
use App\Models\Access\PasswordReset\PasswordReset; use App\Models\Access\PasswordReset\PasswordReset;
use App\Repositories\BaseRepository; use App\Repositories\BaseRepository;
use Illuminate\Database\Eloquent\Model;
/** /**
* Class PermissionRepository. * Class PermissionRepository.
......
...@@ -6,7 +6,6 @@ use App\Mail\ConfirmAcoountMail; ...@@ -6,7 +6,6 @@ use App\Mail\ConfirmAcoountMail;
use App\Models\Access\User\User; use App\Models\Access\User\User;
use App\Repositories\Backend\Access\Role\RoleRepository; use App\Repositories\Backend\Access\Role\RoleRepository;
use App\Repositories\BaseRepository; use App\Repositories\BaseRepository;
use Illuminate\Database\Eloquent\Model;
/** /**
* Class PermissionRepository. * Class PermissionRepository.
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment