Skip to content

Commit

Permalink
AidStream-Lite Dev
Browse files Browse the repository at this point in the history
Improvements
 - [x] Messages according to the exception
 - [x] Redirection to the same view for each and every exception
  • Loading branch information
Sachit Bir Singh Dongol committed Feb 20, 2017
1 parent 6cfc276 commit da1cfc2
Show file tree
Hide file tree
Showing 214 changed files with 28,113 additions and 459 deletions.
23 changes: 19 additions & 4 deletions app/Core/V201/Repositories/Organization/OrganizationRepository.php
Expand Up @@ -299,10 +299,10 @@ protected function generateJson($publishedFile, Settings $settings, Organization
'url' => url(sprintf('files/xml/%s', $publishedFile->filename))
]
],
"filetype" => "organization",
"data_updated" => $publishedFile->updated_at->toDateTimeString(),
"language" => config('app.locale'),
"verified" => "no"
"filetype" => "organization",
"data_updated" => $publishedFile->updated_at->toDateTimeString(),
"language" => config('app.locale'),
"verified" => "no"
];

return json_encode($data);
Expand Down Expand Up @@ -438,4 +438,19 @@ public function checkOrgIdentifier($identifier)

return $data;
}

/**
* Updates organization system version
*
* @param $orgId
* @param $system_version
* @return bool|int
*/
public function updateSystemVersion($orgId, $system_version)
{
$organisation = $this->org->findOrFail($orgId);
$organisation->system_version_id = getVal($system_version, ['index'], 1);

return $organisation->save();
}
}
13 changes: 9 additions & 4 deletions app/Core/V201/Requests/Register.php
Expand Up @@ -2,6 +2,7 @@

use App\Http\Requests\Request;
use App\Models\Organization\Organization;
use App\Models\SystemVersion;
use App\User;
use Illuminate\Support\Facades\Validator;
use App\Core\V201\Traits\GetCodes;
Expand Down Expand Up @@ -71,8 +72,10 @@ public function authorize()
*/
public function rules()
{
$rules = [];
$rules = [];
$systemVersions = implode(",", SystemVersion::lists('id')->toArray());

$rules = ['systemVersion' => sprintf('required|in:%s', $systemVersions)];
$orgRules = $this->getRulesForOrg($this->get('organization'));
$userRules = $this->getRulesForUsers($this->get('users'));
$rules = array_merge($rules, $orgRules, $userRules);
Expand All @@ -88,9 +91,11 @@ public function messages()
{
$messages = [];

$orgMessages = $this->getMessagesForOrg($this->get('organization'));
$userMessages = $this->getMessagesForUsers($this->get('users'));
$messages = array_merge($messages, $orgMessages, $userMessages);
$messages['systemVersion.required'] = 'Please select system version';
$messages['systemVersion.in'] = 'Selected system version is invalid';
$orgMessages = $this->getMessagesForOrg($this->get('organization'));
$userMessages = $this->getMessagesForUsers($this->get('users'));
$messages = array_merge($messages, $orgMessages, $userMessages);

return $messages;
}
Expand Down
45 changes: 42 additions & 3 deletions app/Core/V201/Traits/GetCodes.php
Expand Up @@ -4,11 +4,49 @@ trait GetCodes
{
/**
* return code array from json codeList
* @param $listName
* @param $listName
* @param $listType
* @param string $type
* @return array
*/
public function getCodes($listName, $listType, $type = 'code')
{
$defaultVersion = config('app.default_version_name');
$defaultLocale = config('app.fallback_locale');
$version = session()->get('version');
$locale = config('app.locale');
$rawFilePath = app_path("Core/%s/Codelist/%s/$listType/$listName.json");
$filePath = sprintf($rawFilePath, $version, $locale);
file_exists($filePath) ?: $filePath = sprintf($rawFilePath, $version, $defaultLocale);
file_exists($filePath) ?: $filePath = sprintf($rawFilePath, $defaultVersion, $locale);
file_exists($filePath) ?: $filePath = sprintf($rawFilePath, $defaultVersion, $defaultLocale);
$codeListFromFile = file_get_contents($filePath);
$codeLists = json_decode($codeListFromFile, true);
$codeList = $codeLists[$listName];
$data = [];

foreach ($codeList as $list) {
$data[] = $list[$type];
}

return $data;
}

public function getStringFormatCode($listName, $listType, $type = 'code')
{
$code = $this->getCodes($listName, $listType, $type);

return implode(",", $code);
}

/**
* Returns the given listName with code as a key and name as value.
*
* @param $listType
* @param $listName
* @return array
*/
public function getCodes($listName, $listType)
public function getNameWithCode($listType, $listName)
{
$defaultVersion = config('app.default_version_name');
$defaultLocale = config('app.fallback_locale');
Expand All @@ -25,9 +63,10 @@ public function getCodes($listName, $listType)
$data = [];

foreach ($codeList as $list) {
$data[] = $list['code'];
$data[$list['code']] = $list['name'];
}

return $data;
}
}

54 changes: 46 additions & 8 deletions app/Exceptions/Handler.php
@@ -1,13 +1,15 @@
<?php namespace App\Exceptions;

use Exception;
use Illuminate\Database\QueryException;
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
use Illuminate\Http\Exception\HttpResponseException;
use Illuminate\Session\TokenMismatchException;
use Symfony\Component\HttpKernel\Exception\HttpException;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\ModelNotFoundException;
use Illuminate\Validation\ValidationException;
use Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;

class Handler extends ExceptionHandler
Expand All @@ -25,7 +27,15 @@ class Handler extends ExceptionHandler
ValidationException::class,
TokenMismatchException::class,
HttpResponseException::class,
NotFoundHttpException::class
NotFoundHttpException::class,
MethodNotAllowedHttpException::class,
QueryException::class
];


protected $systemVersionRedirectPath = [
1 => 'activity.index',
2 => 'lite.activity.index'
];

/**
Expand All @@ -50,15 +60,25 @@ public function report(Exception $e)
*/
public function render($request, Exception $e)
{
if ($e instanceof NotFoundHttpException) {
$route = 'activity.index';

if ($e instanceof NotFoundHttpException || $e instanceof MethodNotAllowedHttpException) {
$message = $this->getMessage($e->getStatusCode());

if (auth()->check()) {
return redirect()->route('activity.index')->withResponse(['type' => 'warning', 'code' => ['message', ['message' => '<b>404! Not Found</b><br>The requested url cannot be found in our system.']]]);
if (($organization = auth()->user()->organization)) {
$systemVersion = $organization->system_version_id;
(!array_key_exists($systemVersion, $this->systemVersionRedirectPath)) ?: $route = $this->systemVersionRedirectPath[$systemVersion];
}
}

return response()->view('errors.errors', compact('route', 'message'));
}

$message = '<b>404! Not Found</b><br><br>The requested url cannot be found in our system. <br><br> Please contact us at <a href="support@aidstream.org" target="_blank">support@aidstream.org</a>';
if ($e instanceof QueryException) {
$message = $this->getMessage('505');

return response()->view(sprintf('errors.%s', auth()->check() ? 'errors' : 'noAuthErrors'), compact('message'));
// return redirect()->to('/')->withResponse(['type' => 'warning', 'code' => ['message', ['message' => '<b>404! Not Found</b><br>The requested url cannot be found in our system.']]]);
return response()->view('errors.errors', compact('route', 'message'));
}

if ($e instanceof TokenMismatchException) {
Expand All @@ -85,8 +105,26 @@ public function render($request, Exception $e)
}

$this->log->error($e);
$message = 'Something went wrong. Please contact us at <a href="support@aidstream.org" target="_blank">support@aidstream.org</a>';
$message = $this->getMessage();

return response()->view('errors.errors', compact('message', 'route'));
}

return response()->view(sprintf('errors.%s', auth()->check() ? 'errors' : 'noAuthErrors'), compact('message'));
/**
* Returns exception message from the config file.
*
* @param null $code
* @return mixed
*/
protected function getMessage($code = null)
{
if ($code) {
if (array_key_exists($code, config('exceptionMessages'))) {
return config(sprintf('exceptionMessages.%s', $code));
}
}

return config('exceptionMessages.default');
}
}

11 changes: 6 additions & 5 deletions app/Helpers/GetCodeName.php
Expand Up @@ -68,14 +68,15 @@ public function getCodeName($listType, $listName, $code, $displayCode = true)

/**
* Get Only the activity code name (without the code value)
* @param $listName
* @param $code
* @param int $default
* @param $listName
* @param $code
* @param int $default
* @param string $type
* @return string
*/
public function getCodeNameOnly($listName, $code, $default = - 4)
public function getCodeNameOnly($listName, $code, $default = - 4, $type = 'Activity')
{
$descriptionWithCode = $this->getCodeName('Activity', $listName, $code);
$descriptionWithCode = $this->getCodeName($type, $listName, $code);

return sprintf("%s", substr($descriptionWithCode, 0, $default));
}
Expand Down
10 changes: 10 additions & 0 deletions app/Helpers/helper.php
Expand Up @@ -1193,3 +1193,13 @@ function trimReportingOrg(array $reportingOrg)

return $reportingOrg;
}

/**
* Check if a SuperAdmin user has logged in.
*
* @return bool
*/
function superAdminIsLoggedIn()
{
return (session('role_id') == 3);
}
13 changes: 8 additions & 5 deletions app/Http/Controllers/Auth/AuthController.php
Expand Up @@ -2,6 +2,7 @@

use App\Core\EmailQueue;
use App\Core\Form\BaseForm;
use App\Http\Controllers\Auth\Traits\RedirectsUsersToCorrectVersion;
use App\Http\Controllers\Auth\Traits\ResetsOldPassword;
use App\Http\Controllers\Controller;
use App\Models\Settings;
Expand Down Expand Up @@ -33,7 +34,7 @@ class AuthController extends Controller
|
*/

use AuthenticatesAndRegistersUsers, ResetsOldPassword;
use AuthenticatesAndRegistersUsers, ResetsOldPassword, RedirectsUsersToCorrectVersion;

/**
* @var DatabaseManager
Expand Down Expand Up @@ -185,6 +186,10 @@ public function postLogin(Request $request)
->storeDetailsInSession($user)
->setVersions();

if ($this->userIsRegisteredForLite($user)) {
return $this->redirectToLite();
}

$redirectPath = ($user->isSuperAdmin() || $user->isGroupAdmin())
? config('app.super_admin_dashboard')
: config('app.admin_dashboard');
Expand Down Expand Up @@ -329,6 +334,8 @@ protected function storeDetailsInSession($user)
$settings = Settings::where('organization_id', $user->org_id)->first();
$version = (isset($settings)) ? $settings->version : config('app.default_version');
Session::put('current_version', $version);
$id = ($settings) ? $settings->organization->system_version_id : false;
(!$id) ?: Session::put('system_version', $id);

return $this;
}
Expand Down Expand Up @@ -371,10 +378,6 @@ protected function userOnBoardingRedirectPath($user, $redirectPath)
}
} elseif ($user->role_id == 3 || $user->role_id == 4) {
$redirectPath = config('app.super_admin_dashboard');
} else {
// Auth::user()->userOnBoarding()->create(['has_logged_in_once' => false]);
// Session::put('first_login', true);
// $redirectPath = 'welcome';
}

return $redirectPath;
Expand Down
34 changes: 22 additions & 12 deletions app/Http/Controllers/Auth/RegistrationController.php
Expand Up @@ -2,6 +2,7 @@

use App\Core\Form\BaseForm;
use App\Http\Controllers\Controller;
use App\Models\SystemVersion;
use App\Services\Registration;
use App\Services\RegistrationAgencies;
use App\Services\RequestManager\RegisterOrganization;
Expand Down Expand Up @@ -30,21 +31,27 @@ class RegistrationController extends Controller
/**
* @var RegistrationAgencies
*/
private $regAgencyManager;
protected $regAgencyManager;
/**
* @var SystemVersion
*/
protected $systemVersion;

/**
* @param BaseForm $baseForm
* @param Registration $registrationManager
* @param Verification $verificationManager
* @param RegistrationAgencies $regAgencyManager
* @param SystemVersion $systemVersion
*/
public function __construct(BaseForm $baseForm, Registration $registrationManager, Verification $verificationManager, RegistrationAgencies $regAgencyManager)
public function __construct(BaseForm $baseForm, Registration $registrationManager, Verification $verificationManager, RegistrationAgencies $regAgencyManager, SystemVersion $systemVersion)
{
$this->middleware('guest', ['except' => 'getLogout']);
$this->baseForm = $baseForm;
$this->registrationManager = $registrationManager;
$this->verificationManager = $verificationManager;
$this->regAgencyManager = $regAgencyManager;
$this->systemVersion = $systemVersion;
}

/**
Expand All @@ -53,20 +60,21 @@ public function __construct(BaseForm $baseForm, Registration $registrationManage
*/
public function showRegistrationForm()
{
$regInfo = session()->pull('reg_info');
$orgType = $this->baseForm->getCodeList('OrganizationType', 'Organization', false);
$countries = $this->baseForm->getCodeList('Country', 'Organization', false);
$orgRegAgency = $this->baseForm->getCodeList('OrganisationRegistrationAgency', 'Organization', false);
$dbRegAgency = $this->regAgencyManager->getRegAgenciesCode();
$orgRegAgency = array_merge($orgRegAgency, $dbRegAgency);
$regInfo = session()->pull('reg_info');
$orgType = $this->baseForm->getCodeList('OrganizationType', 'Organization', false);
$countries = $this->baseForm->getCodeList('Country', 'Organization', false);
$orgRegAgency = $this->baseForm->getCodeList('OrganisationRegistrationAgency', 'Organization', false);
$dbRegAgency = $this->regAgencyManager->getRegAgenciesCode();
$orgRegAgency = array_merge($orgRegAgency, $dbRegAgency);
$systemVersions = $this->systemVersion->lists('system_version', 'id')->toArray();

$dbRoles = \DB::table('role')->whereNotNull('permissions')->orderBy('role', 'desc')->get();
$roles = [];
foreach ($dbRoles as $role) {
$roles[$role->id] = $role->role;
}

return view('auth.register', compact('orgType', 'countries', 'orgRegAgency', 'roles', 'regInfo'));
return view('auth.register', compact('orgType', 'countries', 'orgRegAgency', 'roles', 'regInfo', 'systemVersions'));
}

/**
Expand All @@ -77,10 +85,12 @@ public function showRegistrationForm()
public function register(Register $request)
{
$request = request();
$users = $request->get('users');
$orgInfo = $request->get('organization');

if ($organization = $this->registrationManager->register($orgInfo, $users)) {
$systemVersion = ($request->has('systemVersion')) ? $request->get('systemVersion') : 1;
$users = $request->get('users');
$orgInfo = $request->get('organization');

if ($organization = $this->registrationManager->register($orgInfo, $users, $systemVersion)) {
return $this->postRegistration($organization);
} else {
$response = ['type' => 'danger', 'code' => ['failed_registration']];
Expand Down

0 comments on commit da1cfc2

Please sign in to comment.