Laravel Upgrade

* from 5.6.x to 5.7.x
* from 5.7.x to 5.8.x
* from 5.8.x to 6.x
* from 6.x to 7.x
* from 7.x to 8.x
* updated to work with php7.4 and mysql 8.x

Change-Id: I5fa8af21e13ce383d6648a660b1aac7e5ce55fa5
Signed-off-by: smarcet <smarcet@gmail.com>
This commit is contained in:
smarcet 2021-01-26 11:19:43 -03:00 committed by smarcet@gmail.com
parent 2a16bfa1fb
commit adcd76aca2
128 changed files with 10319 additions and 5591 deletions

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
v8.10.0

View File

@ -4,8 +4,7 @@
run: playbooks/openstackid-release-branch/run.yaml run: playbooks/openstackid-release-branch/run.yaml
post-run: playbooks/openstackid-release-branch/post.yaml post-run: playbooks/openstackid-release-branch/post.yaml
timeout: 1800 timeout: 1800
# OpenStackID needs MYSQL 5.7.x and will fail with newer MYSQL, Bionic has Java 5.7.x. nodeset: ubuntu-focal
nodeset: ubuntu-bionic
- job: - job:
# This is included into the osf/openstackid release pipeline from the # This is included into the osf/openstackid release pipeline from the
@ -15,16 +14,13 @@
run: playbooks/openstackid-release-master/run.yaml run: playbooks/openstackid-release-master/run.yaml
post-run: playbooks/openstackid-release-master/post.yaml post-run: playbooks/openstackid-release-master/post.yaml
timeout: 1800 timeout: 1800
# OpenStackID needs MYSQL 5.7.x and will fail with newer MYSQL, Bionic has Java 5.7.x. nodeset: ubuntu-focal
nodeset: ubuntu-bionic
- job: - job:
name: openstackid-unittests name: openstackid-unittests
run: playbooks/openstackid-unittests/run.yaml run: playbooks/openstackid-unittests/run.yaml
timeout: 1800 timeout: 1800
# OpenStackID needs MYSQL 5.7.x and will fail with newer MYSQL, Bionic has Java 5.7.x. nodeset: ubuntu-focal
nodeset: ubuntu-bionic
- project: - project:
name: osf/openstackid name: osf/openstackid
@ -32,12 +28,12 @@
jobs: jobs:
- openstackid-unittests - openstackid-unittests
- opendev-tox-docs: - opendev-tox-docs:
nodeset: ubuntu-bionic nodeset: ubuntu-focal
gate: gate:
jobs: jobs:
- openstackid-unittests - openstackid-unittests
- opendev-tox-docs: - opendev-tox-docs:
nodeset: ubuntu-bionic nodeset: ubuntu-focal
post: post:
jobs: jobs:
- openstackid-release-branch - openstackid-release-branch

View File

@ -52,6 +52,11 @@ final class RebuildUserSpammerEstimator extends Command
public function handle() public function handle()
{ {
try { try {
$is_enabled = boolval(Config::get("jobs.spam_processing_enabled"));
if(!$is_enabled){
return;
}
$connections = Config::get('database.connections', []); $connections = Config::get('database.connections', []);
$db = $connections['openstackid'] ?? []; $db = $connections['openstackid'] ?? [];
$host = $db['host'] ?? ''; $host = $db['host'] ?? '';
@ -59,17 +64,15 @@ final class RebuildUserSpammerEstimator extends Command
$username = $db['username'] ?? ''; $username = $db['username'] ?? '';
$password = $db['password'] ?? ''; $password = $db['password'] ?? '';
$command = sprintf( $command = [sprintf('%s/app/Console/Commands/SpammerProcess/estimator_build.sh', base_path()),
'%s/app/Console/Commands/SpammerProcess/estimator_build.sh "%s" "%s" "%s" "%s" "%s"',
base_path(),
base_path() . '/app/Console/Commands/SpammerProcess', base_path() . '/app/Console/Commands/SpammerProcess',
$host, $host,
$username, $username,
$password, $password,
$database $database
); ];
Log::debug(sprintf("RebuildUserSpammerEstimator::handle running command %s", $command)); Log::debug(sprintf("RebuildUserSpammerEstimator::handle running command %s", implode(" ", $command)));
$process = new Process($command); $process = new Process($command);
$process->setTimeout(PHP_INT_MAX); $process->setTimeout(PHP_INT_MAX);

View File

@ -70,6 +70,10 @@ final class UserSpammerProcessor extends Command
public function handle() public function handle()
{ {
try { try {
$is_enabled = boolval(Config::get("jobs.spam_processing_enabled"));
if(!$is_enabled){
return;
}
$connections = Config::get('database.connections', []); $connections = Config::get('database.connections', []);
$db = $connections['openstackid'] ?? []; $db = $connections['openstackid'] ?? [];
$host = $db['host'] ?? ''; $host = $db['host'] ?? '';
@ -77,17 +81,15 @@ final class UserSpammerProcessor extends Command
$username = $db['username'] ?? ''; $username = $db['username'] ?? '';
$password = $db['password'] ?? ''; $password = $db['password'] ?? '';
$command = sprintf( $command = [sprintf('%s/app/Console/Commands/SpammerProcess/estimator_process.sh',base_path()),
'%s/app/Console/Commands/SpammerProcess/estimator_process.sh "%s" "%s" "%s" "%s" "%s"',
base_path(),
base_path() . '/app/Console/Commands/SpammerProcess', base_path() . '/app/Console/Commands/SpammerProcess',
$host, $host,
$username, $username,
$password, $password,
$database $database
); ];
Log::debug(sprintf("UserSpammerProcessor::handle running command %s", $command)); Log::debug(sprintf("UserSpammerProcessor::handle running command %s", implode(" ",$command)));
$process = new Process($command); $process = new Process($command);
$process->setTimeout(PHP_INT_MAX); $process->setTimeout(PHP_INT_MAX);

View File

@ -41,10 +41,10 @@ class Kernel extends ConsoleKernel
*/ */
protected function schedule(Schedule $schedule) protected function schedule(Schedule $schedule)
{ {
$schedule->command('idp:oauth2-clean')->dailyAt("02:30")->withoutOverlapping(); $schedule->command('idp:oauth2-clean')->dailyAt("02:30")->withoutOverlapping()->onOneServer();
$schedule->command('idp:openid-clean')->dailyAt("03:30")->withoutOverlapping(); $schedule->command('idp:openid-clean')->dailyAt("03:30")->withoutOverlapping()->onOneServer();
// user spammer // user spammer
$schedule->command('user-spam:rebuild')->dailyAt("02:30")->withoutOverlapping(); $schedule->command('user-spam:rebuild')->dailyAt("02:30")->withoutOverlapping()->onOneServer();
$schedule->command('user-spam:process')->dailyAt("03:30")->withoutOverlapping(); $schedule->command('user-spam:process')->dailyAt("03:30")->withoutOverlapping()->onOneServer();
} }
} }

View File

@ -11,7 +11,7 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use Exception; use Throwable;
use Illuminate\Validation\ValidationException; use Illuminate\Validation\ValidationException;
use Illuminate\Auth\Access\AuthorizationException; use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\ModelNotFoundException; use Illuminate\Database\Eloquent\ModelNotFoundException;
@ -45,7 +45,7 @@ class Handler extends ExceptionHandler
* @param \Exception $e * @param \Exception $e
* @return void * @return void
*/ */
public function report(Exception $e) public function report(Throwable $e)
{ {
parent::report($e); parent::report($e);
} }
@ -57,7 +57,7 @@ class Handler extends ExceptionHandler
* @param \Exception $e * @param \Exception $e
* @return \Illuminate\Http\Response * @return \Illuminate\Http\Response
*/ */
public function render($request, Exception $e) public function render($request, Throwable $e)
{ {
return parent::render($request, $e); return parent::render($request, $e);
} }

View File

@ -16,7 +16,7 @@ use App\Http\Utils\CountryList;
use App\libs\Auth\Repositories\IBannedIPRepository; use App\libs\Auth\Repositories\IBannedIPRepository;
use App\libs\Auth\Repositories\IGroupRepository; use App\libs\Auth\Repositories\IGroupRepository;
use Auth\Repositories\IUserRepository; use Auth\Repositories\IUserRepository;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\View;
@ -493,7 +493,7 @@ class AdminController extends Controller {
public function saveServerConfig(){ public function saveServerConfig(){
$values = Input::all(); $values = Request::all();
$rules = array $rules = array
( (

View File

@ -12,17 +12,12 @@
* limitations under the License. * limitations under the License.
**/ **/
use App\Http\Controllers\Api\JsonController; use App\Http\Controllers\Api\JsonController;
use App\Http\Utils\PagingConstants;
use App\ModelSerializers\SerializerRegistry; use App\ModelSerializers\SerializerRegistry;
use App\Services\IBaseService; use App\Services\IBaseService;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use models\utils\IBaseRepository; use models\utils\IBaseRepository;
use utils\Filter;
use utils\FilterParser;
use utils\OrderParser;
use utils\PagingInfo;
use Utils\Services\ILogService; use Utils\Services\ILogService;
use Exception; use Exception;
use models\exceptions\ValidationException; use models\exceptions\ValidationException;
@ -84,7 +79,7 @@ abstract class APICRUDController extends JsonController
return $this->ok(SerializerRegistry::getInstance()->getSerializer($entity, $this->serializerType())->serialize return $this->ok(SerializerRegistry::getInstance()->getSerializer($entity, $this->serializerType())->serialize
( (
Input::get("expand", '') Request::input("expand", '')
)); ));
} }
catch (EntityNotFoundException $ex2) catch (EntityNotFoundException $ex2)
@ -181,7 +176,7 @@ abstract class APICRUDController extends JsonController
* @return array * @return array
*/ */
protected function getCreatePayload():array{ protected function getCreatePayload():array{
return Input::All(); return Request::All();
} }
/** /**

View File

@ -19,7 +19,7 @@ use models\exceptions\EntityNotFoundException;
use models\exceptions\ValidationException; use models\exceptions\ValidationException;
use Utils\Services\IBannedIPService; use Utils\Services\IBannedIPService;
use Utils\Services\ILogService; use Utils\Services\ILogService;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Exception; use Exception;
/** /**
* Class ApiBannedIPController * Class ApiBannedIPController
@ -54,7 +54,7 @@ final class ApiBannedIPController extends APICRUDController
{ {
try { try {
$ip = Input::get("ip", null); $ip = Request::input("ip", null);
if (!is_null($ip)) { if (!is_null($ip)) {
$banned_ip = $this->repository->getByIp(strval($ip)); $banned_ip = $this->repository->getByIp(strval($ip));
} else { } else {
@ -89,7 +89,7 @@ final class ApiBannedIPController extends APICRUDController
{ {
try { try {
if (is_null($id)) { if (is_null($id)) {
$ip = Input::get("ip", null); $ip = Request::input("ip", null);
} else { } else {
$banned_ip = $this->repository->getById($id); $banned_ip = $this->repository->getById($id);
$ip = $banned_ip->getIp(); $ip = $banned_ip->getIp();

View File

@ -14,11 +14,10 @@
use App\Http\Controllers\APICRUDController; use App\Http\Controllers\APICRUDController;
use OAuth2\Services\IAsymmetricKeyService; use OAuth2\Services\IAsymmetricKeyService;
use models\exceptions\EntityNotFoundException;
use Utils\Services\ILogService; use Utils\Services\ILogService;
use OAuth2\Repositories\IAsymmetricKeyRepository; use OAuth2\Repositories\IAsymmetricKeyRepository;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Exception; use Exception;
/** /**
* Class AsymmetricKeyApiController * Class AsymmetricKeyApiController

View File

@ -16,7 +16,6 @@ use App\Http\Utils\PagingConstants;
use App\ModelSerializers\SerializerRegistry; use App\ModelSerializers\SerializerRegistry;
use Exception; use Exception;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use models\exceptions\EntityNotFoundException; use models\exceptions\EntityNotFoundException;
@ -372,7 +371,7 @@ final class ClientApiController extends APICRUDController
*/ */
public function getAccessTokens($id) public function getAccessTokens($id)
{ {
$values = Input::all(); $values = Request::all();
$rules = [ $rules = [
'page' => 'integer|min:1', 'page' => 'integer|min:1',
@ -391,9 +390,9 @@ final class ClientApiController extends APICRUDController
$page = 1; $page = 1;
$per_page = PagingConstants::DefaultPageSize;; $per_page = PagingConstants::DefaultPageSize;;
if (Input::has('page')) { if (Request::has('page')) {
$page = intval(Input::get('page')); $page = intval(Request::input('page'));
$per_page = intval(Input::get('per_page')); $per_page = intval(Request::input('per_page'));
} }
$client = $this->repository->getClientByIdentifier($id); $client = $this->repository->getClientByIdentifier($id);
@ -436,7 +435,7 @@ final class ClientApiController extends APICRUDController
*/ */
public function getRefreshTokens($id) public function getRefreshTokens($id)
{ {
$values = Input::all(); $values = Request::all();
$rules = [ $rules = [
'page' => 'integer|min:1', 'page' => 'integer|min:1',
@ -455,9 +454,9 @@ final class ClientApiController extends APICRUDController
$page = 1; $page = 1;
$per_page = PagingConstants::DefaultPageSize;; $per_page = PagingConstants::DefaultPageSize;;
if (Input::has('page')) { if (Request::has('page')) {
$page = intval(Input::get('page')); $page = intval(Request::input('page'));
$per_page = intval(Input::get('per_page')); $per_page = intval(Request::input('per_page'));
} }
$client = $this->repository->getClientByIdentifier($id); $client = $this->repository->getClientByIdentifier($id);
@ -499,7 +498,7 @@ final class ClientApiController extends APICRUDController
*/ */
public function getAccessTokensByCurrentUser() public function getAccessTokensByCurrentUser()
{ {
$values = Input::all(); $values = Request::all();
$rules = [ $rules = [
'page' => 'integer|min:1', 'page' => 'integer|min:1',
@ -518,9 +517,9 @@ final class ClientApiController extends APICRUDController
$page = 1; $page = 1;
$per_page = PagingConstants::DefaultPageSize;; $per_page = PagingConstants::DefaultPageSize;;
if (Input::has('page')) { if (Request::has('page')) {
$page = intval(Input::get('page')); $page = intval(Request::input('page'));
$per_page = intval(Input::get('per_page')); $per_page = intval(Request::input('per_page'));
} }
$user = $this->auth_service->getCurrentUser(); $user = $this->auth_service->getCurrentUser();
@ -558,7 +557,7 @@ final class ClientApiController extends APICRUDController
*/ */
public function getRefreshTokensByCurrentUser() public function getRefreshTokensByCurrentUser()
{ {
$values = Input::all(); $values = Request::all();
$rules = [ $rules = [
'page' => 'integer|min:1', 'page' => 'integer|min:1',
@ -577,9 +576,9 @@ final class ClientApiController extends APICRUDController
$page = 1; $page = 1;
$per_page = PagingConstants::DefaultPageSize;; $per_page = PagingConstants::DefaultPageSize;;
if (Input::has('page')) { if (Request::has('page')) {
$page = intval(Input::get('page')); $page = intval(Request::input('page'));
$per_page = intval(Input::get('per_page')); $per_page = intval(Request::input('per_page'));
} }
$user = $this->auth_service->getCurrentUser(); $user = $this->auth_service->getCurrentUser();

View File

@ -15,7 +15,7 @@
use OAuth2\Services\IClientPublicKeyService; use OAuth2\Services\IClientPublicKeyService;
use Utils\Services\ILogService; use Utils\Services\ILogService;
use OAuth2\Repositories\IClientPublicKeyRepository; use OAuth2\Repositories\IClientPublicKeyRepository;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
/** /**
* Class ClientPublicKeyApiController * Class ClientPublicKeyApiController
* @package App\Http\Controllers\Api * @package App\Http\Controllers\Api
@ -41,7 +41,7 @@ final class ClientPublicKeyApiController extends AsymmetricKeyApiController
* @return array * @return array
*/ */
protected function getCreatePayload():array{ protected function getCreatePayload():array{
$payload = Input::All(); $payload = Request::All();
return array_merge($payload, $this->extra_create_payload_params); return array_merge($payload, $this->extra_create_payload_params);
} }

View File

@ -18,7 +18,7 @@ use App\ModelSerializers\SerializerRegistry;
use App\Services\Auth\IGroupService; use App\Services\Auth\IGroupService;
use Auth\Repositories\IUserRepository; use Auth\Repositories\IUserRepository;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use models\exceptions\EntityNotFoundException; use models\exceptions\EntityNotFoundException;
use models\exceptions\ValidationException; use models\exceptions\ValidationException;
@ -178,7 +178,7 @@ final class GroupApiController extends APICRUDController
*/ */
public function getUsersFromGroup($group_id) public function getUsersFromGroup($group_id)
{ {
$values = Input::all(); $values = Request::all();
$rules = [ $rules = [
'page' => 'integer|min:1', 'page' => 'integer|min:1',
@ -198,15 +198,15 @@ final class GroupApiController extends APICRUDController
$page = 1; $page = 1;
$per_page = PagingConstants::DefaultPageSize;; $per_page = PagingConstants::DefaultPageSize;;
if (Input::has('page')) { if (Request::has('page')) {
$page = intval(Input::get('page')); $page = intval(Request::input('page'));
$per_page = intval(Input::get('per_page')); $per_page = intval(Request::input('per_page'));
} }
$filter = null; $filter = null;
if (Input::has('filter')) { if (Request::has('filter')) {
$filter = FilterParser::parse(Input::get('filter'), [ $filter = FilterParser::parse(Request::input('filter'), [
'first_name' => ['=@', '=='], 'first_name' => ['=@', '=='],
'last_name' => ['=@', '=='], 'last_name' => ['=@', '=='],
'email' => ['=@', '=='], 'email' => ['=@', '=='],
@ -229,11 +229,9 @@ final class GroupApiController extends APICRUDController
$order = null; $order = null;
if (Input::has('order')) if (Request::has('order'))
{ {
$order = OrderParser::parse(Input::get('order'), [ $order = OrderParser::parse(Request::input('order'), []);
]);
} }
$filter->addFilterCondition(FilterElement::makeEqual("group_id", $group_id)); $filter->addFilterCondition(FilterElement::makeEqual("group_id", $group_id));
@ -244,7 +242,7 @@ final class GroupApiController extends APICRUDController
( (
$data->toArray $data->toArray
( (
Input::get('expand', ''), Request::input('expand', ''),
[], [],
[], [],
[], [],

View File

@ -15,7 +15,7 @@
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Utils\Services\ILogService; use Utils\Services\ILogService;
use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Exception; use Exception;
/** /**
* Class JsonController * Class JsonController
@ -38,8 +38,8 @@ abstract class JsonController extends Controller {
protected function created($data='ok'){ protected function created($data='ok'){
$res = Response::json($data, 201); $res = Response::json($data, 201);
//jsonp //jsonp
if(Input::has('callback')) if(Request::has('callback'))
$res->setCallback(Input::get('callback')); $res->setCallback(Request::input('callback'));
return $res; return $res;
} }
@ -47,8 +47,8 @@ abstract class JsonController extends Controller {
{ {
$res = Response::json($data, $has_content ? 201 : 204); $res = Response::json($data, $has_content ? 201 : 204);
//jsonp //jsonp
if (Input::has('callback')) { if (Request::has('callback')) {
$res->setCallback(Input::get('callback')); $res->setCallback(Request::input('callback'));
} }
return $res; return $res;
} }
@ -56,16 +56,16 @@ abstract class JsonController extends Controller {
protected function deleted($data='ok'){ protected function deleted($data='ok'){
$res = Response::json($data, 204); $res = Response::json($data, 204);
//jsonp //jsonp
if(Input::has('callback')) if(Request::has('callback'))
$res->setCallback(Input::get('callback')); $res->setCallback(Request::input('callback'));
return $res; return $res;
} }
protected function ok($data = 'ok'){ protected function ok($data = 'ok'){
$res = Response::json($data, 200); $res = Response::json($data, 200);
//jsonp //jsonp
if(Input::has('callback')) if(Request::has('callback'))
$res->setCallback(Input::get('callback')); $res->setCallback(Request::input('callback'));
return $res; return $res;
} }

View File

@ -18,9 +18,8 @@ use App\Http\Utils\HTMLCleaner;
use App\ModelSerializers\SerializerRegistry; use App\ModelSerializers\SerializerRegistry;
use Auth\Repositories\IUserRepository; use Auth\Repositories\IUserRepository;
use Illuminate\Http\Request as LaravelRequest; use Illuminate\Http\Request as LaravelRequest;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use models\exceptions\EntityNotFoundException; use models\exceptions\EntityNotFoundException;
@ -166,7 +165,7 @@ final class OAuth2UserApiController extends OAuth2ProtectedController
if(!$this->resource_server_context->getCurrentUserId()){ if(!$this->resource_server_context->getCurrentUserId()){
return $this->error403(); return $this->error403();
} }
$payload = Input::json()->all(); $payload = Request::json()->all();
// Creates a Validator instance and validates the data. // Creates a Validator instance and validates the data.
$validation = Validator::make($payload, UserValidationRulesFactory::build($payload, true)); $validation = Validator::make($payload, UserValidationRulesFactory::build($payload, true));

View File

@ -13,7 +13,6 @@
**/ **/
use App\ModelSerializers\SerializerRegistry; use App\ModelSerializers\SerializerRegistry;
use App\Services\Auth\IUserService; use App\Services\Auth\IUserService;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
@ -53,7 +52,7 @@ final class OAuth2UserRegistrationRequestApiController extends OAuth2ProtectedCo
try { try {
if(!Request::isJson()) return $this->error400(); if(!Request::isJson()) return $this->error400();
$payload = Input::json()->all(); $payload = Request::json()->all();
// Creates a Validator instance and validates the data. // Creates a Validator instance and validates the data.
$validation = Validator::make($payload, [ $validation = Validator::make($payload, [

View File

@ -19,7 +19,7 @@ use App\ModelSerializers\SerializerRegistry;
use Auth\Repositories\IUserRepository; use Auth\Repositories\IUserRepository;
use Exception; use Exception;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use models\exceptions\ValidationException; use models\exceptions\ValidationException;
use OAuth2\Services\ITokenService; use OAuth2\Services\ITokenService;
@ -155,7 +155,7 @@ final class UserApiController extends APICRUDController
{ {
try { try {
$hint = Input::get('hint', 'none'); $hint = Request::input('hint', 'none');
switch ($hint) { switch ($hint) {
case 'access-token': case 'access-token':
@ -193,10 +193,10 @@ final class UserApiController extends APICRUDController
protected function curateUpdatePayload(array $payload): array protected function curateUpdatePayload(array $payload): array
{ {
if(in_array("bio", $payload)){ if(array_key_exists("bio", $payload)){
$payload["bio"] = strip_tags($payload["bio"]); $payload["bio"] = strip_tags($payload["bio"]);
} }
if(in_array("statement_of_interest", $payload)){ if(array_key_exists("statement_of_interest", $payload)){
$payload["statement_of_interest"] = strip_tags($payload["statement_of_interest"]); $payload["statement_of_interest"] = strip_tags($payload["statement_of_interest"]);
} }
return $payload; return $payload;
@ -204,10 +204,10 @@ final class UserApiController extends APICRUDController
protected function curateCreatePayload(array $payload): array protected function curateCreatePayload(array $payload): array
{ {
if(in_array("bio", $payload)){ if(array_key_exists("bio", $payload)){
$payload["bio"] = strip_tags($payload["bio"]); $payload["bio"] = strip_tags($payload["bio"]);
} }
if(in_array("statement_of_interest", $payload)){ if(array_key_exists("statement_of_interest", $payload)){
$payload["statement_of_interest"] = strip_tags($payload["statement_of_interest"]); $payload["statement_of_interest"] = strip_tags($payload["statement_of_interest"]);
} }
return $payload; return $payload;

View File

@ -13,9 +13,8 @@
**/ **/
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\View;
use OAuth2\Exceptions\OAuth2BaseException; use OAuth2\Exceptions\OAuth2BaseException;
use OAuth2\Factories\OAuth2AuthorizationRequestFactory; use OAuth2\Factories\OAuth2AuthorizationRequestFactory;
@ -30,9 +29,7 @@ use OAuth2\Responses\OAuth2Response;
use OAuth2\Strategies\OAuth2ResponseStrategyFactoryMethod; use OAuth2\Strategies\OAuth2ResponseStrategyFactoryMethod;
use Utils\Http\HttpContentType; use Utils\Http\HttpContentType;
use Utils\Services\IAuthService; use Utils\Services\IAuthService;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redirect;
use Exception; use Exception;
/** /**
@ -67,9 +64,9 @@ final class OAuth2ProviderController extends Controller
IAuthService $auth_service IAuthService $auth_service
) )
{ {
$this->oauth2_protocol = $oauth2_protocol; $this->oauth2_protocol = $oauth2_protocol;
$this->auth_service = $auth_service; $this->auth_service = $auth_service;
$this->client_repository = $client_repository; $this->client_repository = $client_repository;
} }
/** /**
@ -81,15 +78,14 @@ final class OAuth2ProviderController extends Controller
*/ */
public function auth() public function auth()
{ {
try try {
{
$response = $this->oauth2_protocol->authorize $response = $this->oauth2_protocol->authorize
( (
OAuth2AuthorizationRequestFactory::getInstance()->build OAuth2AuthorizationRequestFactory::getInstance()->build
( (
new OAuth2Message new OAuth2Message
( (
Input::all() Request::all()
) )
) )
); );
@ -104,31 +100,25 @@ final class OAuth2ProviderController extends Controller
} }
return $response; return $response;
} } catch (OAuth2BaseException $ex1) {
catch(OAuth2BaseException $ex1)
{
return Response::view return Response::view
( (
'errors.400', 'errors.400',
array [
( 'error' => $ex1->getError(),
'error' => $ex1->getError(),
'error_description' => $ex1->getMessage() 'error_description' => $ex1->getMessage()
), ],
400 400
); );
} } catch (Exception $ex) {
catch(Exception $ex)
{
Log::error($ex); Log::error($ex);
return Response::view return Response::view
( (
'errors.400', 'errors.400',
array [
( 'error' => "Bad Request",
'error' => "Bad Request",
'error_description' => "Generic Error" 'error_description' => "Generic Error"
), ],
400 400
); );
} }
@ -141,19 +131,18 @@ final class OAuth2ProviderController extends Controller
public function token() public function token()
{ {
$response = $this->oauth2_protocol->token $response = $this->oauth2_protocol->token
( (
new OAuth2TokenRequest new OAuth2TokenRequest
( (
new OAuth2Message new OAuth2Message
( (
Input::all() Request::all()
) )
) )
); );
if ($response instanceof OAuth2Response) if ($response instanceof OAuth2Response) {
{
$strategy = OAuth2ResponseStrategyFactoryMethod::buildStrategy $strategy = OAuth2ResponseStrategyFactoryMethod::buildStrategy
( (
$this->oauth2_protocol->getLastRequest(), $this->oauth2_protocol->getLastRequest(),
@ -177,13 +166,12 @@ final class OAuth2ProviderController extends Controller
( (
new OAuth2Message new OAuth2Message
( (
Input::all() Request::all()
) )
) )
); );
if ($response instanceof OAuth2Response) if ($response instanceof OAuth2Response) {
{
$strategy = OAuth2ResponseStrategyFactoryMethod::buildStrategy $strategy = OAuth2ResponseStrategyFactoryMethod::buildStrategy
( (
$this->oauth2_protocol->getLastRequest(), $this->oauth2_protocol->getLastRequest(),
@ -209,13 +197,12 @@ final class OAuth2ProviderController extends Controller
( (
new OAuth2Message new OAuth2Message
( (
Input::all() Request::all()
) )
) )
); );
if ($response instanceof OAuth2Response) if ($response instanceof OAuth2Response) {
{
$strategy = OAuth2ResponseStrategyFactoryMethod::buildStrategy $strategy = OAuth2ResponseStrategyFactoryMethod::buildStrategy
( (
$this->oauth2_protocol->getLastRequest(), $this->oauth2_protocol->getLastRequest(),
@ -234,7 +221,7 @@ final class OAuth2ProviderController extends Controller
public function certs() public function certs()
{ {
$doc = $this->oauth2_protocol->getJWKSDocument(); $doc = $this->oauth2_protocol->getJWKSDocument();
$response = Response::make($doc, 200); $response = Response::make($doc, 200);
$response->header('Content-Type', HttpContentType::Json); $response->header('Content-Type', HttpContentType::Json);
@ -244,7 +231,7 @@ final class OAuth2ProviderController extends Controller
public function discovery() public function discovery()
{ {
$doc = $this->oauth2_protocol->getDiscoveryDocument(); $doc = $this->oauth2_protocol->getDiscoveryDocument();
$response = Response::make($doc, 200); $response = Response::make($doc, 200);
$response->header('Content-Type', HttpContentType::Json); $response->header('Content-Type', HttpContentType::Json);
@ -252,7 +239,7 @@ final class OAuth2ProviderController extends Controller
} }
/** /**
* @see http://openid.net/specs/openid-connect-session-1_0.html#OPiframe * @see http://openid.net/specs/openid-connect-session-1_0.html#OPiframe
*/ */
public function checkSessionIFrame() public function checkSessionIFrame()
{ {
@ -269,20 +256,19 @@ final class OAuth2ProviderController extends Controller
( (
new OAuth2Message new OAuth2Message
( (
Input::all() Request::all()
) )
); );
if(!$request->isValid()) if (!$request->isValid()) {
{
Log::error('invalid OAuth2LogoutRequest!'); Log::error('invalid OAuth2LogoutRequest!');
return Response::view('errors.400', [ return Response::view('errors.400', [
'error' => 'Invalid logout request.', 'error' => 'Invalid logout request.',
'error_description' => $request->getLastValidationError() 'error_description' => $request->getLastValidationError()
], 400); ], 400);
} }
$response = $this->oauth2_protocol->endSession($request); $response = $this->oauth2_protocol->endSession($request);
if (!is_null($response) && $response instanceof OAuth2Response) { if (!is_null($response) && $response instanceof OAuth2Response) {
$strategy = OAuth2ResponseStrategyFactoryMethod::buildStrategy($request, $response); $strategy = OAuth2ResponseStrategyFactoryMethod::buildStrategy($request, $response);

View File

@ -11,9 +11,10 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Exception; use Exception;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Response;
use OpenId\Exceptions\InvalidOpenIdMessageException; use OpenId\Exceptions\InvalidOpenIdMessageException;
@ -24,6 +25,7 @@ use OpenId\OpenIdMessage;
use OpenId\Responses\OpenIdResponse; use OpenId\Responses\OpenIdResponse;
use OpenId\Services\IMementoOpenIdSerializerService; use OpenId\Services\IMementoOpenIdSerializerService;
use OpenId\Strategies\OpenIdResponseStrategyFactoryMethod; use OpenId\Strategies\OpenIdResponseStrategyFactoryMethod;
/** /**
* Class OpenIdProviderController * Class OpenIdProviderController
* @package App\Http\Controllers\OpenId * @package App\Http\Controllers\OpenId
@ -57,7 +59,7 @@ class OpenIdProviderController extends Controller
public function endpoint() public function endpoint()
{ {
try { try {
$msg = new OpenIdMessage(Input::all()); $msg = new OpenIdMessage(Request::all());
if (!$msg->isValid() && $this->memento_service->exists()) { if (!$msg->isValid() && $this->memento_service->exists()) {
$msg = OpenIdMessage::buildFromMemento($this->memento_service->load()); $msg = OpenIdMessage::buildFromMemento($this->memento_service->load());
@ -74,30 +76,25 @@ class OpenIdProviderController extends Controller
return $strategy->handle($response); return $strategy->handle($response);
} }
return $response; return $response;
} } catch (OpenIdBaseException $ex1) {
catch(OpenIdBaseException $ex1){
Log::warning($ex1); Log::warning($ex1);
return Response::view return Response::view
( (
'errors.400', 'errors.400',
array [
( 'error' => "Bad Request",
'error' => "Bad Request",
'error_description' => $ex1->getMessage() 'error_description' => $ex1->getMessage()
), ],
400 400
); );
} } catch (Exception $ex) {
catch(Exception $ex){
Log::error($ex); Log::error($ex);
return Response::view return Response::view
( (
'errors.400', 'errors.400',
array [ 'error' => "Bad Request",
(
'error' => "Bad Request",
'error_description' => "Generic Error" 'error_description' => "Generic Error"
), ],
400 400
); );
} }

View File

@ -13,7 +13,7 @@
**/ **/
use App\Http\Utils\PagingConstants; use App\Http\Utils\PagingConstants;
use App\ModelSerializers\SerializerRegistry; use App\ModelSerializers\SerializerRegistry;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use utils\Filter; use utils\Filter;
@ -63,7 +63,7 @@ trait GetAllTrait
*/ */
public function getAll() public function getAll()
{ {
$values = Input::all(); $values = Request::all();
$rules = [ $rules = [
'page' => 'integer|min:1', 'page' => 'integer|min:1',
@ -83,15 +83,15 @@ trait GetAllTrait
$page = 1; $page = 1;
$per_page = PagingConstants::DefaultPageSize;; $per_page = PagingConstants::DefaultPageSize;;
if (Input::has('page')) { if (Request::has('page')) {
$page = intval(Input::get('page')); $page = intval(Request::input('page'));
$per_page = intval(Input::get('per_page')); $per_page = intval(Request::input('per_page'));
} }
$filter = null; $filter = null;
if (Input::has('filter')) { if (Request::has('filter')) {
$filter = FilterParser::parse(Input::get('filter'), $this->getFilterRules()); $filter = FilterParser::parse(Request::input('filter'), $this->getFilterRules());
} }
if(is_null($filter)) $filter = new Filter(); if(is_null($filter)) $filter = new Filter();
@ -103,9 +103,9 @@ trait GetAllTrait
$order = null; $order = null;
if (Input::has('order')) if (Request::has('order'))
{ {
$order = OrderParser::parse(Input::get('order'), $this->getOrderRules()); $order = OrderParser::parse(Request::input('order'), $this->getOrderRules());
} }
$data = $this->repository->getAllByPage(new PagingInfo($page, $per_page), $this->applyExtraFilters($filter), $order); $data = $this->repository->getAllByPage(new PagingInfo($page, $per_page), $this->applyExtraFilters($filter), $order);
@ -114,7 +114,7 @@ trait GetAllTrait
( (
$data->toArray $data->toArray
( (
Input::get('expand', ''), Request::input('expand', ''),
[], [],
[], [],
[], [],

View File

@ -11,30 +11,29 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use App\Http\Controllers\OpenId\DiscoveryController; use App\Http\Controllers\OpenId\DiscoveryController;
use App\Http\Controllers\OpenId\OpenIdController; use App\Http\Controllers\OpenId\OpenIdController;
use App\Http\Utils\CountryList; use App\Http\Utils\CountryList;
use Auth\Exceptions\AuthenticationException; use Auth\Exceptions\AuthenticationException;
use Auth\Exceptions\UnverifiedEmailMemberException; use Auth\Exceptions\UnverifiedEmailMemberException;
use Exception; use Exception;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redirect; use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Validator; use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\View; use Illuminate\Support\Facades\View;
use OAuth2\Repositories\IApiScopeRepository; use OAuth2\Repositories\IApiScopeRepository;
use OAuth2\Repositories\IClientRepository; use OAuth2\Repositories\IClientRepository;
use OpenId\Services\IUserService; use OpenId\Services\IUserService;
use OAuth2\Services\IApiScopeService;
use OAuth2\Services\IClientService;
use OAuth2\Services\IMementoOAuth2SerializerService; use OAuth2\Services\IMementoOAuth2SerializerService;
use OAuth2\Services\IResourceServerService; use OAuth2\Services\IResourceServerService;
use OAuth2\Services\ISecurityContextService; use OAuth2\Services\ISecurityContextService;
use OAuth2\Services\ITokenService; use OAuth2\Services\ITokenService;
use OpenId\Services\IMementoOpenIdSerializerService; use OpenId\Services\IMementoOpenIdSerializerService;
use OpenId\Services\ITrustedSitesService; use OpenId\Services\ITrustedSitesService;
use models\exceptions\ValidationException;
use Services\IUserActionService; use Services\IUserActionService;
use Sokil\IsoCodes\IsoCodesFactory; use Sokil\IsoCodes\IsoCodesFactory;
use Strategies\DefaultLoginStrategy; use Strategies\DefaultLoginStrategy;
@ -47,6 +46,7 @@ use Utils\IPHelper;
use Utils\Services\IAuthService; use Utils\Services\IAuthService;
use Utils\Services\IServerConfigurationService; use Utils\Services\IServerConfigurationService;
use Utils\Services\IServerConfigurationService as IUtilsServerConfigurationService; use Utils\Services\IServerConfigurationService as IUtilsServerConfigurationService;
/** /**
* Class UserController * Class UserController
* @package App\Http\Controllers * @package App\Http\Controllers
@ -151,26 +151,27 @@ final class UserController extends OpenIdController
) )
{ {
$this->openid_memento_service = $openid_memento_service; $this->openid_memento_service = $openid_memento_service;
$this->oauth2_memento_service = $oauth2_memento_service; $this->oauth2_memento_service = $oauth2_memento_service;
$this->auth_service = $auth_service; $this->auth_service = $auth_service;
$this->server_configuration_service = $server_configuration_service; $this->server_configuration_service = $server_configuration_service;
$this->trusted_sites_service = $trusted_sites_service; $this->trusted_sites_service = $trusted_sites_service;
$this->discovery = $discovery; $this->discovery = $discovery;
$this->user_service = $user_service; $this->user_service = $user_service;
$this->user_action_service = $user_action_service; $this->user_action_service = $user_action_service;
$this->client_repository = $client_repository; $this->client_repository = $client_repository;
$this->scope_repository = $scope_repository; $this->scope_repository = $scope_repository;
$this->token_service = $token_service; $this->token_service = $token_service;
$this->resource_server_service = $resource_server_service; $this->resource_server_service = $resource_server_service;
$this->utils_configuration_service = $utils_configuration_service; $this->utils_configuration_service = $utils_configuration_service;
$this->security_context_service = $security_context_service; $this->security_context_service = $security_context_service;
$this->middleware(function ($request, $next) { $this->middleware(function ($request, $next) {
if ($this->openid_memento_service->exists()) Log::debug(sprintf("UserController::middleware"));
{ if ($this->openid_memento_service->exists()) {
//openid stuff //openid stuff
$this->login_strategy = new OpenIdLoginStrategy Log::debug(sprintf("UserController::middleware OIDC"));
$this->login_strategy = new OpenIdLoginStrategy
( (
$this->openid_memento_service, $this->openid_memento_service,
$this->user_action_service, $this->user_action_service,
@ -185,10 +186,8 @@ final class UserController extends OpenIdController
$this->user_action_service $this->user_action_service
); );
} } else if ($this->oauth2_memento_service->exists()) {
else if ($this->oauth2_memento_service->exists()) Log::debug(sprintf("UserController::middleware OAUTH2"));
{
$this->login_strategy = new OAuth2LoginStrategy $this->login_strategy = new OAuth2LoginStrategy
( (
$this->auth_service, $this->auth_service,
@ -204,11 +203,10 @@ final class UserController extends OpenIdController
$this->scope_repository, $this->scope_repository,
$this->client_repository $this->client_repository
); );
} } else {
else
{
//default stuff //default stuff
$this->login_strategy = new DefaultLoginStrategy($this->user_action_service, $this->auth_service); Log::debug(sprintf("UserController::middleware DEFAULT"));
$this->login_strategy = new DefaultLoginStrategy($this->user_action_service, $this->auth_service);
$this->consent_strategy = null; $this->consent_strategy = null;
} }
@ -229,49 +227,44 @@ final class UserController extends OpenIdController
public function postLogin() public function postLogin()
{ {
$max_login_attempts_2_show_captcha = $this->server_configuration_service->getConfigValue("MaxFailed.LoginAttempts.2ShowCaptcha"); $max_login_attempts_2_show_captcha = $this->server_configuration_service->getConfigValue("MaxFailed.LoginAttempts.2ShowCaptcha");
$login_attempts = 0; $login_attempts = 0;
$username = ''; $username = '';
try try {
{
$data = Input::all(); $data = Request::all();
if(isset($data['username'])) if (isset($data['username']))
$data['username'] = trim($data['username']); $data['username'] = trim($data['username']);
if(isset($data['password'])) if (isset($data['password']))
$data['password'] = trim($data['password']); $data['password'] = trim($data['password']);
$login_attempts = intval(Input::get('login_attempts')); $login_attempts = intval(Request::input('login_attempts'));
// Build the validation constraint set. // Build the validation constraint set.
$rules = array $rules = array
( (
'username' => 'required|email', 'username' => 'required|email',
'password' => 'required', 'password' => 'required',
); );
if ($login_attempts >= $max_login_attempts_2_show_captcha) if ($login_attempts >= $max_login_attempts_2_show_captcha) {
{
$rules['g-recaptcha-response'] = 'required|recaptcha'; $rules['g-recaptcha-response'] = 'required|recaptcha';
} }
// Create a new validator instance. // Create a new validator instance.
$validator = Validator::make($data, $rules); $validator = Validator::make($data, $rules);
if ($validator->passes()) if ($validator->passes()) {
{
$username = $data['username']; $username = $data['username'];
$password = $data['password']; $password = $data['password'];
$remember = Input::get("remember"); $remember = Request::input("remember");
$remember = !is_null($remember); $remember = !is_null($remember);
if ($this->auth_service->login($username, $password, $remember)) if ($this->auth_service->login($username, $password, $remember)) {
{
return $this->login_strategy->postLogin(); return $this->login_strategy->postLogin();
} }
//failed login attempt... //failed login attempt...
$user = $this->auth_service->getUserByUsername($username); $user = $this->auth_service->getUserByUsername($username);
if (!is_null($user)) if (!is_null($user)) {
{
$login_attempts = $user->getLoginFailedAttempt(); $login_attempts = $user->getLoginFailedAttempt();
} }
@ -280,9 +273,9 @@ final class UserController extends OpenIdController
array array
( (
'max_login_attempts_2_show_captcha' => $max_login_attempts_2_show_captcha, 'max_login_attempts_2_show_captcha' => $max_login_attempts_2_show_captcha,
'login_attempts' => $login_attempts, 'login_attempts' => $login_attempts,
'username' => $username, 'username' => $username,
'error_message' => "We are sorry, your username or password does not match an existing record." 'error_message' => "We are sorry, your username or password does not match an existing record."
) )
); );
} }
@ -292,31 +285,26 @@ final class UserController extends OpenIdController
array array
( (
'max_login_attempts_2_show_captcha' => $max_login_attempts_2_show_captcha, 'max_login_attempts_2_show_captcha' => $max_login_attempts_2_show_captcha,
'login_attempts' => $login_attempts, 'login_attempts' => $login_attempts,
'validator' => $validator 'validator' => $validator
) )
); );
} } catch (UnverifiedEmailMemberException $ex1) {
catch(UnverifiedEmailMemberException $ex1)
{
Log::warning($ex1); Log::warning($ex1);
return $this->login_strategy->errorLogin return $this->login_strategy->errorLogin
( (
array array
( (
'max_login_attempts_2_show_captcha' => $max_login_attempts_2_show_captcha, 'max_login_attempts_2_show_captcha' => $max_login_attempts_2_show_captcha,
'login_attempts' => $login_attempts, 'login_attempts' => $login_attempts,
'username' => $username, 'username' => $username,
'error_message' => $ex1->getMessage() 'error_message' => $ex1->getMessage()
) )
); );
} } catch (AuthenticationException $ex2) {
catch(AuthenticationException $ex2){
Log::warning($ex2); Log::warning($ex2);
return Redirect::action('UserController@getLogin'); return Redirect::action('UserController@getLogin');
} } catch (Exception $ex) {
catch (Exception $ex)
{
Log::error($ex); Log::error($ex);
return Redirect::action('UserController@getLogin'); return Redirect::action('UserController@getLogin');
} }
@ -324,9 +312,16 @@ final class UserController extends OpenIdController
public function getConsent() public function getConsent()
{ {
if (is_null($this->consent_strategy)) if (is_null($this->consent_strategy)) {
{ return Response::view
return View::make("errors.400"); (
'errors.400',
[
'error' => "Bad Request",
'error_description' => "Generic Error"
],
400
);
} }
return $this->consent_strategy->getConsent(); return $this->consent_strategy->getConsent();
@ -334,28 +329,32 @@ final class UserController extends OpenIdController
public function postConsent() public function postConsent()
{ {
try try {
{ $data = Request::all();
$data = Input::all();
$rules = array $rules = array
( (
'trust' => 'required|oauth2_trust_response', 'trust' => 'required|oauth2_trust_response',
); );
// Create a new validator instance. // Create a new validator instance.
$validator = Validator::make($data, $rules); $validator = Validator::make($data, $rules);
if ($validator->passes()) if ($validator->passes()) {
{ if (is_null($this->consent_strategy)) {
if (is_null($this->consent_strategy)) Log::warning(sprintf("UserController::postConsent consent strategy is null"));
{ return Response::view
return View::make("errors.404"); (
'errors.400',
[
'error' => "Bad Request",
'error_description' => "Generic Error"
],
400
);
} }
return $this->consent_strategy->postConsent(Input::get("trust")); return $this->consent_strategy->postConsent(Request::input("trust"));
} }
return Redirect::action('UserController@getConsent')->withErrors($validator); return Redirect::action('UserController@getConsent')->withErrors($validator);
} } catch (Exception $ex) {
catch (Exception $ex)
{
Log::error($ex); Log::error($ex);
return Redirect::action('UserController@getConsent'); return Redirect::action('UserController@getConsent');
} }
@ -363,16 +362,13 @@ final class UserController extends OpenIdController
public function getIdentity($identifier) public function getIdentity($identifier)
{ {
try try {
{
$user = $this->auth_service->getUserByOpenId($identifier); $user = $this->auth_service->getUserByOpenId($identifier);
if (is_null($user)) if (is_null($user)) {
{
return View::make("errors.404"); return View::make("errors.404");
} }
if ($this->isDiscoveryRequest()) if ($this->isDiscoveryRequest()) {
{
/* /*
* If the Claimed Identifier was not previously discovered by the Relying Party * If the Claimed Identifier was not previously discovered by the Relying Party
* (the "openid.identity" in the request was "http://specs.openid.net/auth/2.0/identifier_select" * (the "openid.identity" in the request was "http://specs.openid.net/auth/2.0/identifier_select"
@ -392,8 +388,7 @@ final class UserController extends OpenIdController
$current_user = $this->auth_service->getCurrentUser(); $current_user = $this->auth_service->getCurrentUser();
$another_user = false; $another_user = false;
if ($current_user && $current_user->getIdentifier() != $user->getIdentifier()) if ($current_user && $current_user->getIdentifier() != $user->getIdentifier()) {
{
$another_user = true; $another_user = true;
} }
@ -414,9 +409,7 @@ final class UserController extends OpenIdController
]; ];
return View::make("identity", $params); return View::make("identity", $params);
} } catch (Exception $ex) {
catch (Exception $ex)
{
Log::error($ex); Log::error($ex);
return View::make("errors.404"); return View::make("errors.404");
} }
@ -438,8 +431,8 @@ final class UserController extends OpenIdController
public function getProfile() public function getProfile()
{ {
$user = $this->auth_service->getCurrentUser(); $user = $this->auth_service->getCurrentUser();
$sites = $user->getTrustedSites(); $sites = $user->getTrustedSites();
$actions = $user->getLatestNActions(10); $actions = $user->getLatestNActions(10);
// init database // init database
@ -448,18 +441,18 @@ final class UserController extends OpenIdController
// get languages database // get languages database
$languages = $isoCodes->getLanguages()->toArray(); $languages = $isoCodes->getLanguages()->toArray();
$lang2Code = []; $lang2Code = [];
foreach ($languages as $lang){ foreach ($languages as $lang) {
if(!empty($lang->getAlpha2())) if (!empty($lang->getAlpha2()))
$lang2Code[] = $lang; $lang2Code[] = $lang;
} }
return View::make("profile", [ return View::make("profile", [
'user' => $user, 'user' => $user,
"openid_url" => $this->server_configuration_service->getUserIdentityEndpointURL($user->getIdentifier()), "openid_url" => $this->server_configuration_service->getUserIdentityEndpointURL($user->getIdentifier()),
"sites" => $sites, "sites" => $sites,
'actions' => $actions, 'actions' => $actions,
'countries' => CountryList::getCountries(), 'countries' => CountryList::getCountries(),
'languages' => $lang2Code, 'languages' => $lang2Code,
]); ]);
} }

View File

@ -30,7 +30,7 @@ class Kernel extends HttpKernel
protected $middleware = [ protected $middleware = [
\Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
\App\Http\Middleware\SingleAccessPoint::class, \App\Http\Middleware\SingleAccessPoint::class,
\Spatie\Cors\Cors::class, \Fruitcake\Cors\HandleCors::class,
\App\Http\Middleware\ParseMultipartFormDataInputForNonPostRequests::class, \App\Http\Middleware\ParseMultipartFormDataInputForNonPostRequests::class,
]; ];
@ -46,9 +46,9 @@ class Kernel extends HttpKernel
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class, \Illuminate\Session\Middleware\StartSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
SecurityHTTPHeadersWriterMiddleware::class, SecurityHTTPHeadersWriterMiddleware::class,
], ],
'api' => [ 'api' => [
'ssl', 'ssl',
'oauth2.endpoint', 'oauth2.endpoint',

View File

@ -15,12 +15,9 @@ use Closure;
use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Response;
use OAuth2\Repositories\IClientRepository; use OAuth2\Repositories\IClientRepository;
use Utils\Services\IAuthService; use Utils\Services\IAuthService;
use Utils\Services\ServiceLocator;
use Utils\Services\UtilsServiceCatalog;
use OAuth2\Services\OAuth2ServiceCatalog;
use Exception; use Exception;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
/** /**
@ -64,7 +61,7 @@ final class CurrentUserCanEditOAuth2Client
$client_id = $route->parameter('client_id'); $client_id = $route->parameter('client_id');
if(is_null($client_id)) if(is_null($client_id))
$client_id = Input::get('client_id',null);; $client_id = Request::input('client_id',null);;
$client = $this->client_repository->getClientByIdentifier($client_id); $client = $this->client_repository->getClientByIdentifier($client_id);
$user = $this->auth_service->getCurrentUser(); $user = $this->auth_service->getCurrentUser();

View File

@ -15,12 +15,9 @@ use Closure;
use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Response;
use OAuth2\Repositories\IClientRepository; use OAuth2\Repositories\IClientRepository;
use Utils\Services\IAuthService; use Utils\Services\IAuthService;
use Utils\Services\ServiceLocator;
use Utils\Services\UtilsServiceCatalog;
use OAuth2\Services\OAuth2ServiceCatalog;
use Exception; use Exception;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Input; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Route; use Illuminate\Support\Facades\Route;
/** /**
@ -64,7 +61,7 @@ class CurrentUserOwnsOAuth2Client
$client_id = $route->parameter('client_id'); $client_id = $route->parameter('client_id');
if(is_null($client_id)) if(is_null($client_id))
$client_id = Input::get('client_id',null);; $client_id = Request::input('client_id',null);;
$client = $this->client_repository->getClientByIdentifier($client_id); $client = $this->client_repository->getClientByIdentifier($client_id);
$user = $this->auth_service->getCurrentUser(); $user = $this->auth_service->getCurrentUser();

View File

@ -11,10 +11,8 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware; use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
use OAuth2\Services\IPrincipalService; use OAuth2\Services\IPrincipalService;
use Symfony\Component\HttpFoundation\Request;
/** /**
* Class EncryptCookies * Class EncryptCookies
* @package App\Http\Middleware * @package App\Http\Middleware
@ -30,30 +28,4 @@ class EncryptCookies extends Middleware
IPrincipalService::OP_BROWSER_STATE_COOKIE_NAME IPrincipalService::OP_BROWSER_STATE_COOKIE_NAME
]; ];
/**
* Decrypt the cookies on the request.
*
* @param \Symfony\Component\HttpFoundation\Request $request
* @return \Symfony\Component\HttpFoundation\Request
*/
protected function decrypt(Request $request)
{
foreach ($request->cookies as $key => $cookie) {
if ($this->isDisabled($key)) {
continue;
}
try {
$request->cookies->set($key, $this->decryptCookie($key, $cookie));
} catch (DecryptException $e) {
$request->cookies->set($key, null);
}
catch(\ErrorException $e1){
$request->cookies->set($key, null);
}
}
return $request;
}
} }

View File

@ -12,7 +12,6 @@
* limitations under the License. * limitations under the License.
**/ **/
use Closure; use Closure;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Request; use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Response; use Illuminate\Support\Facades\Response;
@ -144,7 +143,7 @@ final class OAuth2BearerAccessTokenRequestValidator
} else { } else {
// http://tools.ietf.org/html/rfc6750#section-2- 2 // http://tools.ietf.org/html/rfc6750#section-2- 2
// if access token is not on authorization header check on POST/GET params // if access token is not on authorization header check on POST/GET params
$access_token_value = Input::get(OAuth2Protocol::OAuth2Protocol_AccessToken, ''); $access_token_value = Request::input(OAuth2Protocol::OAuth2Protocol_AccessToken, '');
} }
if (is_null($access_token_value) || empty($access_token_value)) { if (is_null($access_token_value) || empty($access_token_value)) {

View File

@ -23,7 +23,7 @@ use libs\utils\RequestUtils;
*/ */
class SecurityHTTPHeadersWriterMiddleware class SecurityHTTPHeadersWriterMiddleware
{ {
/** /**
* Handle an incoming request. * Handle an incoming request.
* *
* @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Request $request
@ -34,7 +34,7 @@ class SecurityHTTPHeadersWriterMiddleware
{ {
$response = $next($request); $response = $next($request);
// https://www.owasp.org/index.php/List_of_useful_HTTP_headers // https://www.owasp.org/index.php/List_of_useful_HTTP_headers
$response->headers->set('X-Content-Type-Options','nosniff'); $response->headers->set('X-Content-Type-Options','nosniff');
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
$response->headers->set('X-XSS-Protection','1; mode=block'); $response->headers->set('X-XSS-Protection','1; mode=block');

View File

@ -13,18 +13,19 @@
**/ **/
use Illuminate\Mail\Message; use Illuminate\Mail\Message;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Utils\Services\ICacheService;
use Monolog\Formatter\FormatterInterface;
use Monolog\Handler\MailHandler; use Monolog\Handler\MailHandler;
use Monolog\Logger; use Monolog\Logger;
use Monolog\Formatter\LineFormatter; use Monolog\Formatter\LineFormatter;
use Illuminate\Support\Facades\Mail; use Illuminate\Support\Facades\Mail;
use Utils\Services\ICacheService;
/** /**
* Class LaravelMailerHandler * Class LaravelMailerHandler
* @package App\Http\Utils\Logs * @package App\Http\Utils\Logs
*/ */
final class LaravelMailerHandler extends MailHandler final class LaravelMailerHandler extends MailHandler
{ {
// seconds // in seconds
const TIME_BETWEEN_ERRORS = 60 * 30; const TIME_BETWEEN_ERRORS = 60 * 30;
const SENT_ERROR_EMAIL = 'SENT_ERROR_EMAIL'; const SENT_ERROR_EMAIL = 'SENT_ERROR_EMAIL';
/** /**
@ -43,13 +44,13 @@ final class LaravelMailerHandler extends MailHandler
* Optional headers for the message * Optional headers for the message
* @var array * @var array
*/ */
protected $headers = []; protected $headers = array();
/** /**
* Optional parameters for the message * Optional parameters for the message
* @var array * @var array
*/ */
protected $parameters = []; protected $parameters = array();
/** /**
* The wordwrap length for the message * The wordwrap length for the message
@ -77,30 +78,29 @@ final class LaravelMailerHandler extends MailHandler
private $cacheService; private $cacheService;
/** /**
* LaravelMailerHandler constructor.
* @param ICacheService $cacheService * @param ICacheService $cacheService
* @param string|array $to The receiver of the mail * @param $to
* @param string $subject The subject of the mail * @param $subject
* @param string $from The sender of the mail * @param $from
* @param int $level The minimum logging level at which this handler will be triggered * @param int $level
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not * @param bool $bubble
* @param int $maxColumnWidth The maximum column width that the message lines will have * @param int $maxColumnWidth
*/ */
public function __construct(ICacheService $cacheService, $to, $subject, $from, $level = Logger::ERROR, $bubble = true, $maxColumnWidth = 70) public function __construct(ICacheService $cacheService, $to, $subject, $from, $level = Logger::ERROR, $bubble = true, $maxColumnWidth = 70)
{ {
parent::__construct($level, $bubble); parent::__construct($level, $bubble);
$this->cacheService = $cacheService;
$this->from = $from; $this->from = $from;
$this->to = is_array($to) ? $to : array($to); $this->to = is_array($to) ? $to : array($to);
$this->subject = $subject; $this->subject = empty($subject) ? 'IDP ERROR' : $subject;
$this->addHeader(sprintf('From: %s', $from)); $this->addHeader(sprintf('From: %s', $from));
$this->maxColumnWidth = $maxColumnWidth; $this->maxColumnWidth = $maxColumnWidth;
$this->cacheService = $cacheService;
} }
/** /**
* Add headers to the message * @param $headers
* * @return $this
* @param string|array $headers Custom added headers
* @return self
*/ */
public function addHeader($headers) public function addHeader($headers)
{ {
@ -130,10 +130,11 @@ final class LaravelMailerHandler extends MailHandler
/** /**
* {@inheritdoc} * {@inheritdoc}
*/ */
protected function send($content, array $records) protected function send($content, array $records):void
{ {
$content = wordwrap($content, $this->maxColumnWidth); $content = wordwrap($content, $this->maxColumnWidth);
$subject = $this->subject; $subject = $this->subject;
if ($records) { if ($records) {
$subjectFormatter = new LineFormatter($this->subject); $subjectFormatter = new LineFormatter($this->subject);
@ -147,7 +148,7 @@ final class LaravelMailerHandler extends MailHandler
Log::debug(sprintf("LaravelMailerHandler::send skipping exception %s %s", $subject, $content)); Log::debug(sprintf("LaravelMailerHandler::send skipping exception %s %s", $subject, $content));
return; return;
} }
$this->cacheService->setSingleValue(self::SENT_ERROR_EMAIL, self::SENT_ERROR_EMAIL, LaravelMailerHandler::TIME_BETWEEN_ERRORS); $this->cacheService->setSingleValue(self::SENT_ERROR_EMAIL, self::SENT_ERROR_EMAIL, self::TIME_BETWEEN_ERRORS);
} }
foreach ($this->to as $to) { foreach ($this->to as $to) {
@ -207,4 +208,14 @@ final class LaravelMailerHandler extends MailHandler
return $this; return $this;
} }
/**
* Gets the default formatter.
*
* @return FormatterInterface
*/
protected function getDefaultFormatter(): FormatterInterface
{
return new LineFormatter();
}
} }

View File

@ -1,424 +0,0 @@
<?php
/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the Closure to execute when that URI is requested.
|
*/
Route::pattern('id', '[0-9]+');
Route::pattern('uri_id', '[0-9]+');
Route::pattern('active', '(true|false)');
Route::pattern('hint', '(access-token|refresh-token)');
Route::pattern('scope_id', '[0-9]+');
Route::group(['namespace' => 'App\Http\Controllers', 'middleware' => 'web' ], function() {
// openid endpoints
Route::group(array('middleware' => ['ssl']), function () {
Route::get('/', "HomeController@index");
// OpenId endpoints
Route::group(['namespace' => 'OpenId' ], function() {
Route::get('/discovery', "DiscoveryController@idp");
Route::get("/discovery/users/{identifier}","DiscoveryController@user")->where(array('identifier' => '[\d\w\.\#]+'));
//op endpoint url
Route::post('/accounts/openid2', 'OpenIdProviderController@endpoint');
Route::get('/accounts/openid2', 'OpenIdProviderController@endpoint');
});
//user interaction
Route::group(array('prefix' => 'auth'), function () {
Route::group(array('prefix' => 'login'), function () {
Route::get('', "UserController@getLogin");
Route::post('', ['middleware' => 'csrf', 'uses' => 'UserController@postLogin']);
Route::get('cancel', "UserController@cancelLogin");
});
// registration routes
Route::group(array('prefix' => 'register'), function () {
Route::get('', 'Auth\RegisterController@showRegistrationForm');
Route::post('', ['middleware' => 'csrf', 'uses' => 'Auth\RegisterController@register']);
});
Route::group(array('prefix' => 'verification'), function () {
Route::get('', 'Auth\EmailVerificationController@showVerificationForm');
Route::get('{token}', 'Auth\EmailVerificationController@verify')->name("verification_verify");
Route::post('', ['middleware' => 'csrf', 'uses' => 'Auth\EmailVerificationController@resend']);
});
// password reset routes
Route::group(array('prefix' => 'password'), function () {
Route::group(array('prefix' => 'set'), function () {
Route::get('{token}', 'Auth\PasswordSetController@showPasswordSetForm')->name('password.set');
Route::post('', ['middleware' => 'csrf', 'uses' => 'Auth\PasswordSetController@setPassword']);
});
Route::group(array('prefix' => 'reset'), function () {
Route::get('', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::get('{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('', ['middleware' => 'csrf', 'uses' => 'Auth\ResetPasswordController@reset']);
});
Route::post('email', ['middleware' => 'csrf', 'uses' => 'Auth\ForgotPasswordController@sendResetLinkEmail'])->name('password.email');
});
});
/*
* If the Claimed Identifier was not previously discovered by the Relying Party
* (the "openid.identity" in the request was "http://specs.openid.net/auth/2.0/identifier_select"
* or a different Identifier, or if the OP is sending an unsolicited positive assertion),
* the Relying Party MUST perform discovery on the Claimed Identifier in
* the response to make sure that the OP is authorized to make assertions about the Claimed Identifier.
*/
Route::get("/{identifier}", "UserController@getIdentity");
});
//oauth2 endpoints
Route::group(['namespace'=> 'OAuth2', 'middleware' => ['ssl']], function () {
Route::get('/.well-known/openid-configuration', "OAuth2ProviderController@discovery");
});
Route::group(['namespace' => 'OAuth2' , 'prefix' => 'oauth2', 'middleware' => ['ssl']], function () {
Route::get('/check-session', "OAuth2ProviderController@checkSessionIFrame");
Route::get('/end-session', "OAuth2ProviderController@endSession");
Route::post('/end-session', "OAuth2ProviderController@endSession");
//authorization endpoint
Route::any('/auth', "OAuth2ProviderController@auth");
// OIDC
// certificates
Route::get('/certs', "OAuth2ProviderController@certs");
// discovery document
Route::get('/.well-known/openid-configuration', "OAuth2ProviderController@discovery");
//token endpoint
Route::group(array('prefix' => 'token'), function () {
Route::post('/', "OAuth2ProviderController@token");
Route::post('/revoke', "OAuth2ProviderController@revoke");
Route::post('/introspection', "OAuth2ProviderController@introspection");
});
});
Route::group(array('middleware' => ['ssl', 'auth']), function () {
Route::get('/accounts/user/consent', "UserController@getConsent");
Route::post('/accounts/user/consent', ['middleware' => 'csrf', 'uses' => 'UserController@postConsent']);
Route::any("/accounts/user/logout", "UserController@logout");
Route::get("/accounts/user/profile", "UserController@getProfile");
Route::any("/accounts/user/profile/trusted_site/delete/{id}", "UserController@deleteTrustedSite");
});
Route::group(['prefix' => 'admin', 'middleware' => ['ssl', 'auth']], function () {
//client admin UI
Route::get('clients/edit/{id}', ['middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'AdminController@editRegisteredClient']);
Route::get('clients', 'AdminController@listOAuth2Clients');
Route::get('/grants', 'AdminController@editIssuedGrants');
//oauth2 server admin UI
Route::group(['middleware' => ['oauth2.currentuser.serveradmin']], function () {
Route::get('/api-scope-groups', 'AdminController@listApiScopeGroups');
Route::get('/api-scope-groups/{id}', 'AdminController@editApiScopeGroup');
Route::get('/resource-servers', 'AdminController@listResourceServers');
Route::get('/resource-server/{id}', 'AdminController@editResourceServer');
Route::get('/api/{id}', 'AdminController@editApi');
Route::get('/scope/{id}', 'AdminController@editScope');
Route::get('/endpoint/{id}', 'AdminController@editEndpoint');
Route::get('/locked-clients', 'AdminController@listLockedClients');
// server private keys
Route::get('/private-keys', 'AdminController@listServerPrivateKeys');
//security
Route::group(array('prefix' => 'users'), function () {
Route::get('', 'AdminController@listUsers');
Route::group(array('prefix' => '{user_id}'), function () {
Route::get('', 'AdminController@editUser')->name("edit_user");
});
});
Route::group(array('prefix' => 'groups'), function () {
Route::get('', 'AdminController@listGroups');
Route::group(array('prefix' => '{group_id}'), function () {
Route::get('', 'AdminController@editGroup');
});
});
});
Route::group(array('middleware' => ['openstackid.currentuser.serveradmin']), function () {
Route::get('server-config', 'AdminController@listServerConfig');
Route::post('server-config', 'AdminController@saveServerConfig');
Route::get('banned-ips', 'AdminController@listBannedIPs');
});
});
// Admin Backend Services
Route::group([
'namespace' => 'Api',
'prefix' => 'admin/api/v1',
'middleware' => ['ssl', 'auth']], function () {
Route::group(['prefix' => 'users'], function () {
Route::delete('/me/tokens/{value}',"UserApiController@revokeMyToken");
Route::get('' , "UserApiController@getAll");
Route::post('', ['middleware' => ['openstackid.currentuser.serveradmin.json'], 'uses' => "UserApiController@create"]);
Route::put('me', "UserApiController@updateMe");
Route::group(['prefix' => '{id}'], function(){
Route::group(['prefix' => 'locked'], function(){
Route::put('', ['middleware' => ['openstackid.currentuser.serveradmin.json'], 'uses' => 'UserApiController@unlock']);
Route::delete('', ['middleware' => ['openstackid.currentuser.serveradmin.json'], 'uses' => 'UserApiController@lock']);
});
Route::get('', ['middleware' => ['openstackid.currentuser.serveradmin.json'], 'uses' => "UserApiController@get"]);
Route::delete('', ['middleware' => ['openstackid.currentuser.serveradmin.json'], 'uses' =>"UserApiController@delete"]);
Route::put('', ['middleware' => ['openstackid.currentuser.serveradmin.json'], 'uses' =>"UserApiController@update"]);
});
});
Route::group(['prefix' => 'groups', 'middleware' => ['openstackid.currentuser.serveradmin.json']], function () {
Route::get('', "GroupApiController@getAll");
Route::post('', "GroupApiController@create");
Route::group(['prefix' => '{id}'], function(){
Route::get('', "GroupApiController@get");
Route::delete('', "GroupApiController@delete");
Route::put('', "GroupApiController@update");
Route::group(['prefix' => 'users'], function(){
Route::get('', "GroupApiController@getUsersFromGroup");
Route::group(['prefix' => '{user_id}'], function(){
Route::put('','GroupApiController@addUserToGroup');
Route::delete('','GroupApiController@removeUserFromGroup');
});
});
});
});
Route::group(['prefix' => 'banned-ips', 'middleware' => ['openstackid.currentuser.serveradmin.json']], function () {
Route::get('/', "ApiBannedIPController@getAll");
Route::group(['prefix' => '{id?}'], function(){
Route::get('', "ApiBannedIPController@get");
Route::delete('', "ApiBannedIPController@delete");
});
});
//client api
Route::group(array('prefix' => 'clients'), function () {
Route::get('', 'ClientApiController@getAll');
Route::post('', 'ClientApiController@create');
Route::group(['prefix' => '{id}'], function(){
Route::get('', "ClientApiController@get");
Route::put('', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@update'));
Route::delete('', array('middleware' => ['oauth2.currentuser.owns.client'], 'uses' => 'ClientApiController@delete'));
// particular settings
Route::delete('lock', array('middleware' => ['openstackid.currentuser.serveradmin.json'], 'uses' => 'ClientApiController@unlock'));
Route::put('secret', array('middleware' => ['oauth2.currentuser.owns.client'], 'uses' => 'ClientApiController@regenerateClientSecret'));
Route::put('use-refresh-tokens/{use_refresh_token}', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@setRefreshTokenClient'));
Route::put('rotate-refresh-tokens/{rotate_refresh_token}', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@setRotateRefreshTokenPolicy'));
Route::get('access-tokens', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@getAccessTokens'));
Route::get('refresh-tokens', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@getRefreshTokens'));
// public keys
Route::group(['prefix' => 'public_keys'], function(){
Route::post('', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientPublicKeyApiController@_create'));
Route::get('', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientPublicKeyApiController@getAll'));
Route::group(['prefix' => '{public_key_id}'], function(){
Route::delete('', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientPublicKeyApiController@_delete'));
Route::put('', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientPublicKeyApiController@_update'));
});
});
//allowed redirect uris endpoints
Route::group(['prefix' => 'uris'], function(){
Route::get('', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@getRegisteredUris'));
Route::post('', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@addAllowedRedirectUri'));
Route::delete('{uri_id}', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@deleteClientAllowedUri'));
});
// allowed origins
Route::group(['prefix' => 'origins'], function(){
Route::post('', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@addAllowedOrigin'));
Route::delete('{origin_id}', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@deleteClientAllowedOrigin'));
});
Route::delete('token/{value}/{hint}', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@revokeToken'));
// scopes
Route::group(['prefix' => 'scopes'], function(){
Route::put('{scope_id}', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@addAllowedScope'));
Route::delete('{scope_id}', array('middleware' => ['oauth2.currentuser.allow.client.edition'], 'uses' => 'ClientApiController@removeAllowedScope'));
});
Route::put('active', array('middleware' => ['oauth2.currentuser.owns.client'], 'uses' => 'ClientApiController@activate'));
Route::delete('active', array('middleware' => ['oauth2.currentuser.owns.client'], 'uses' => 'ClientApiController@deactivate'));
});
Route::group(['prefix' => 'me'], function(){
Route::get('access-tokens', array('middleware' => [], 'uses' => 'ClientApiController@getAccessTokensByCurrentUser'));
Route::get('refresh-tokens', array('middleware' => [], 'uses' => 'ClientApiController@getRefreshTokensByCurrentUser'));
});
});
// resource servers
Route::group(array('prefix' => 'resource-servers', 'middleware' => ['oauth2.currentuser.serveradmin.json']), function () {
Route::get('', "ApiResourceServerController@getAll");
Route::post('', "ApiResourceServerController@create");
Route::group(['prefix' => '{id}'], function(){
Route::get('', "ApiResourceServerController@get");
Route::delete('', "ApiResourceServerController@delete");
Route::put('', "ApiResourceServerController@update");
Route::put('client-secret', "ApiResourceServerController@regenerateClientSecret");
Route::put('active', "ApiResourceServerController@activate");
Route::delete('active', "ApiResourceServerController@deactivate");
});
});
// api scope groups
Route::group(['prefix' => 'api-scope-groups', 'middleware' => ['oauth2.currentuser.serveradmin.json']], function () {
Route::get('', "ApiScopeGroupController@getAll");
Route::post('', "ApiScopeGroupController@create");
Route::group(['prefix' => '{id}'], function(){
Route::put('', "ApiScopeGroupController@update");
Route::get('', "ApiScopeGroupController@get");
Route::delete('', "ApiScopeGroupController@delete");
Route::put('/active', "ApiScopeGroupController@activate");
Route::delete('/active', "ApiScopeGroupController@deactivate");
});
});
// apis
Route::group(['prefix' => 'apis', 'middleware' => ['oauth2.currentuser.serveradmin.json']], function () {
Route::get('', "ApiController@getAll");
Route::post('', "ApiController@create");
Route::group(['prefix' => '{id}'], function(){
Route::get('', "ApiController@get");
Route::delete('', "ApiController@delete");
Route::put('', "ApiController@update");
Route::put('/active', "ApiController@activate");
Route::delete('/active', "ApiController@deactivate");
});
});
// scopes
Route::group(['prefix' => 'scopes', 'middleware' => ['oauth2.currentuser.serveradmin.json']], function () {
Route::get('/', "ApiScopeController@getAll");
Route::post('/', "ApiScopeController@create");
Route::group(['prefix' => '{id}'], function(){
Route::get('', "ApiScopeController@get");
Route::delete('', "ApiScopeController@delete");
Route::put('', "ApiScopeController@update");
Route::put('/active', "ApiScopeController@activate");
Route::delete('/active', "ApiScopeController@deactivate");
});
});
// endpoints
Route::group(['prefix' => 'endpoints', 'middleware' => ['oauth2.currentuser.serveradmin.json']], function () {
Route::get('', "ApiEndpointController@getAll");
Route::post('', "ApiEndpointController@create");
Route::group(['prefix' => '{id}'], function(){
Route::get('', "ApiEndpointController@get");
Route::delete('', "ApiEndpointController@delete");
Route::put('', "ApiEndpointController@update");
Route::put('/active', "ApiEndpointController@activate");
Route::delete('/active', "ApiEndpointController@deactivate");
Route::group(['prefix' => 'scope'], function(){
Route::group(['prefix' => '{scope_id}'], function(){
Route::put('', "ApiEndpointController@addRequiredScope");
Route::delete('', "ApiEndpointController@removeRequiredScope");
});
});
});
});
// private keys
Route::group(array('prefix' => 'private-keys', 'middleware' => ['oauth2.currentuser.serveradmin.json']), function () {
Route::get('', "ServerPrivateKeyApiController@getAll");
Route::post('', "ServerPrivateKeyApiController@create");
Route::group(['prefix' => '{id}'], function(){
Route::delete('', "ServerPrivateKeyApiController@delete");
Route::put('', "ServerPrivateKeyApiController@update");
});
});
});
});
// OAuth2 Protected API
Route::group(
[
'namespace' => 'App\Http\Controllers\Api\OAuth2',
'prefix' => 'api/v1',
'middleware' => [
'ssl',
'oauth2.endpoint',
]
], function () {
Route::group(['prefix' => 'users'], function () {
Route::get('', 'OAuth2UserApiController@getAll');
Route::get('/{id}', 'OAuth2UserApiController@get');
Route::group(['prefix' => 'me'], function () {
Route::get('', 'OAuth2UserApiController@me');
Route::match(['options','put'],'','OAuth2UserApiController@UpdateMe');
Route::group(['prefix' => 'pic'], function () {
Route::match(['options','put'],'','OAuth2UserApiController@UpdateMyPic');
});
});
Route::get('/info', 'OAuth2UserApiController@userInfo');
Route::post('/info', 'OAuth2UserApiController@userInfo');
});
Route::group(['prefix' => 'user-registration-requests'], function(){
Route::match(['options','post'],'', 'OAuth2UserRegistrationRequestApiController@register');
});
// 3rd Party SSO integrations
Route::group(['prefix' => 'sso'], function () {
Route::group(['prefix' => 'disqus'], function () {
Route::group(['prefix' => '{forum_slug}'], function () {
Route::get('profile', 'OAuth2DisqusSSOApiController@getUserProfile');
});
});
Route::group(['prefix' => 'rocket-chat'], function () {
Route::group(['prefix' => '{forum_slug}'], function () {
Route::get('profile', 'OAuth2RocketChatSSOApiController@getUserProfile');
});
});
Route::group(['prefix' => 'stream-chat'], function () {
Route::group(['prefix' => '{forum_slug}'], function () {
Route::get('profile', 'OAuth2StreamChatSSOApiController@getUserProfile');
});
});
});
});

View File

@ -54,10 +54,10 @@ class ApiScope extends BaseEntity
private $default; private $default;
/** /**
* @ORM\Column(name="`system`", type="boolean") * @ORM\Column(name="`is_system`", type="boolean")
* @var bool * @var bool
*/ */
private $system; private $is_system;
/** /**
* @ORM\Column(name="`assigned_by_groups`", type="boolean") * @ORM\Column(name="`assigned_by_groups`", type="boolean")
@ -86,7 +86,7 @@ class ApiScope extends BaseEntity
$this->short_description = null; $this->short_description = null;
$this->active = false; $this->active = false;
$this->default = false; $this->default = false;
$this->system = false; $this->is_system = false;
$this->assigned_by_groups = false; $this->assigned_by_groups = false;
$this->scope_groups = new ArrayCollection(); $this->scope_groups = new ArrayCollection();
} }
@ -144,21 +144,21 @@ class ApiScope extends BaseEntity
/** /**
* @return string * @return string
*/ */
public function getApiName():string{ public function getApiName():?string{
return $this->hasApi() ? $this->getApi()->getName(): null; return $this->hasApi() ? $this->getApi()->getName(): null;
} }
/** /**
* @return string * @return string
*/ */
public function getApiDescription():string{ public function getApiDescription():?string{
return $this->hasApi() ? $this->getApi()->getDescription(): null; return $this->hasApi() ? $this->getApi()->getDescription(): null;
} }
/** /**
* @return string * @return string
*/ */
public function getApiLogo():string{ public function getApiLogo():?string{
return $this->hasApi() ? $this->getApi()->getLogo(): null; return $this->hasApi() ? $this->getApi()->getLogo(): null;
} }
@ -247,15 +247,15 @@ class ApiScope extends BaseEntity
*/ */
public function isSystem(): bool public function isSystem(): bool
{ {
return $this->system; return $this->is_system;
} }
/** /**
* @param bool $system * @param bool $is_system
*/ */
public function setSystem(bool $system): void public function setSystem(bool $is_system): void
{ {
$this->system = $system; $this->is_system = $is_system;
} }
/** /**
@ -281,6 +281,8 @@ class ApiScope extends BaseEntity
public function __get($name) { public function __get($name) {
if($name == 'api_id') if($name == 'api_id')
return $this->getApiId(); return $this->getApiId();
if($name == 'system')
return $this->isSystem();
return $this->{$name}; return $this->{$name};
} }
} }

View File

@ -13,6 +13,7 @@
**/ **/
use Illuminate\Routing\Router; use Illuminate\Routing\Router;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
/** /**
* Class RouteServiceProvider * Class RouteServiceProvider
* @package App\Providers * @package App\Providers
@ -47,7 +48,46 @@ final class RouteServiceProvider extends ServiceProvider
*/ */
public function map(Router $router) public function map(Router $router)
{ {
require app_path('Http/routes.php'); Route::pattern('id', '[0-9]+');
Route::pattern('uri_id', '[0-9]+');
Route::pattern('active', '(true|false)');
Route::pattern('hint', '(access-token|refresh-token)');
Route::pattern('scope_id', '[0-9]+');
$this->mapApiRoutes();
$this->mapWebRoutes();
}
/**
* Define the "web" routes for the application.
*
* These routes all receive session state, CSRF protection, etc.
*
* @return void
*/
protected function mapWebRoutes()
{
Route::middleware('web')
->namespace($this->namespace)
->group(base_path('routes/web.php'));
}
/**
* Define the "api" routes for the application.
*
* These routes are typically stateless.
*
* @return void
*/
protected function mapApiRoutes()
{
Route::middleware('api')
->namespace('App\Http\Controllers\Api\OAuth2')
->prefix('api/v1')
->group(base_path('routes/api.php'));
} }
} }

View File

@ -33,6 +33,7 @@ use App\Repositories\IServerExtensionRepository;
use Auth\Group; use Auth\Group;
use Auth\User; use Auth\User;
use Auth\UserPasswordResetRequest; use Auth\UserPasswordResetRequest;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Models\BannedIP; use Models\BannedIP;
@ -72,10 +73,8 @@ use OpenId\Repositories\IOpenIdTrustedSiteRepository;
* Class RepositoriesProvider * Class RepositoriesProvider
* @package Repositories * @package Repositories
*/ */
final class RepositoriesProvider extends ServiceProvider final class RepositoriesProvider extends ServiceProvider implements DeferrableProvider
{ {
protected $defer = true;
public function boot() public function boot()
{ {
} }
@ -284,7 +283,7 @@ final class RepositoriesProvider extends ServiceProvider
ISpamEstimatorFeedRepository::class, ISpamEstimatorFeedRepository::class,
IDisqusSSOProfileRepository::class, IDisqusSSOProfileRepository::class,
IRocketChatSSOProfileRepository::class, IRocketChatSSOProfileRepository::class,
IStreamChatSSOProfileRepository::class IStreamChatSSOProfileRepository::class,
]; ];
} }
} }

View File

@ -320,7 +320,7 @@ final class UserService extends AbstractService implements IUserService
$user = $request->getOwner(); $user = $request->getOwner();
$user->setPassword($new_password); $user->setPassword($new_password);
$request->redeem(); $request->redeem();
Event::fire(new UserPasswordResetSuccessful($user->getId())); Event::dispatch(new UserPasswordResetSuccessful($user->getId()));
return $user; return $user;
}); });
} }
@ -417,7 +417,7 @@ final class UserService extends AbstractService implements IUserService
$request->setOwner($user); $request->setOwner($user);
$request->redeem(); $request->redeem();
$this->user_repository->add($user); $this->user_repository->add($user);
Event::fire(new UserPasswordResetSuccessful($user->getId())); Event::dispatch(new UserPasswordResetSuccessful($user->getId()));
return $request; return $request;
}); });
} }

View File

@ -123,8 +123,8 @@ final class ClientService extends AbstractService implements IClientService
if if
( (
Input::has(OAuth2Protocol::OAuth2Protocol_ClientAssertionType) && Request::has(OAuth2Protocol::OAuth2Protocol_ClientAssertionType) &&
Input::has(OAuth2Protocol::OAuth2Protocol_ClientAssertion) Request::has(OAuth2Protocol::OAuth2Protocol_ClientAssertion)
) )
{ {
Log::debug Log::debug
@ -139,8 +139,8 @@ final class ClientService extends AbstractService implements IClientService
return new ClientAssertionAuthenticationContext return new ClientAssertionAuthenticationContext
( (
Input::get(OAuth2Protocol::OAuth2Protocol_ClientAssertionType, ''), Request::input(OAuth2Protocol::OAuth2Protocol_ClientAssertionType, ''),
Input::get(OAuth2Protocol::OAuth2Protocol_ClientAssertion, '') Request::input(OAuth2Protocol::OAuth2Protocol_ClientAssertion, '')
); );
} }
@ -189,7 +189,7 @@ final class ClientService extends AbstractService implements IClientService
); );
} }
if(Input::has(OAuth2Protocol::OAuth2Protocol_ClientId)) if(Request::has(OAuth2Protocol::OAuth2Protocol_ClientId))
{ {
Log::debug Log::debug
( (
@ -204,14 +204,14 @@ final class ClientService extends AbstractService implements IClientService
$client_secret = null; $client_secret = null;
$auth_type = OAuth2Protocol::TokenEndpoint_AuthMethod_None; $auth_type = OAuth2Protocol::TokenEndpoint_AuthMethod_None;
if(Input::has(OAuth2Protocol::OAuth2Protocol_ClientSecret)){ if(Request::has(OAuth2Protocol::OAuth2Protocol_ClientSecret)){
$client_secret = urldecode(Input::get(OAuth2Protocol::OAuth2Protocol_ClientSecret, '')); $client_secret = urldecode(Request::input(OAuth2Protocol::OAuth2Protocol_ClientSecret, ''));
$auth_type = OAuth2Protocol::TokenEndpoint_AuthMethod_ClientSecretPost; $auth_type = OAuth2Protocol::TokenEndpoint_AuthMethod_ClientSecretPost;
} }
return new ClientCredentialsAuthenticationContext return new ClientCredentialsAuthenticationContext
( (
urldecode(Input::get(OAuth2Protocol::OAuth2Protocol_ClientId, '')), urldecode(Request::input(OAuth2Protocol::OAuth2Protocol_ClientId, '')),
$client_secret, $client_secret,
$auth_type $auth_type
); );
@ -446,7 +446,7 @@ final class ClientService extends AbstractService implements IClientService
if (is_null($client) || !$client instanceof Client) { if (is_null($client) || !$client instanceof Client) {
throw new EntityNotFoundException(sprintf("client id %s does not exists!", $id)); throw new EntityNotFoundException(sprintf("client id %s does not exists!", $id));
} }
Event::fire('oauth2.client.delete', [$client->getClientId()]); Event::dispatch('oauth2.client.delete', [$client->getClientId()]);
$this->client_repository->delete($client); $this->client_repository->delete($client);
}); });
} }
@ -485,7 +485,7 @@ final class ClientService extends AbstractService implements IClientService
$client = $this->client_credential_generator->generate($client, true); $client = $this->client_credential_generator->generate($client, true);
$client->setEditedBy($current_user); $client->setEditedBy($current_user);
Event::fire('oauth2.client.regenerate.secret', array($client->getClientId())); Event::dispatch('oauth2.client.regenerate.secret', array($client->getClientId()));
return $client; return $client;
}); });
@ -506,7 +506,7 @@ final class ClientService extends AbstractService implements IClientService
} }
$client->setLocked(true); $client->setLocked(true);
$client->setEditedBy($this->auth_service->getCurrentUser()); $client->setEditedBy($this->auth_service->getCurrentUser());
Event::fire(new OAuth2ClientLocked($client->getClientId())); Event::dispatch(new OAuth2ClientLocked($client->getClientId()));
return $client; return $client;
}); });

View File

@ -13,6 +13,7 @@
**/ **/
use App\Http\Utils\IUserIPHelperProvider; use App\Http\Utils\IUserIPHelperProvider;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use OAuth2\Services\AccessTokenGenerator; use OAuth2\Services\AccessTokenGenerator;
use OAuth2\Services\AuthorizationCodeGenerator; use OAuth2\Services\AuthorizationCodeGenerator;
@ -25,10 +26,8 @@ use Illuminate\Support\Facades\App;
* Class OAuth2ServiceProvider * Class OAuth2ServiceProvider
* @package Services\OAuth2 * @package Services\OAuth2
*/ */
final class OAuth2ServiceProvider extends ServiceProvider final class OAuth2ServiceProvider extends ServiceProvider implements DeferrableProvider
{ {
protected $defer = true;
public function boot() public function boot()
{ {
} }

View File

@ -42,7 +42,9 @@ final class PrincipalService implements IPrincipalService
$op_browser_state = Session::get(self::OPBrowserState); $op_browser_state = Session::get(self::OPBrowserState);
Log::debug(sprintf("PrincipalService::get - user_id %s auth_time %s op_browser_state %s", $user_id, $auth_time, $op_browser_state)); Log::debug(sprintf("PrincipalService::get - user_id %s auth_time %s op_browser_state %s", $user_id, $auth_time, $op_browser_state));
// overwrite it
// overwrite it just in case
Cookie::queue Cookie::queue
( (
IPrincipalService::OP_BROWSER_STATE_COOKIE_NAME, IPrincipalService::OP_BROWSER_STATE_COOKIE_NAME,
@ -55,7 +57,6 @@ final class PrincipalService implements IPrincipalService
$raw = false, $raw = false,
$sameSite = 'none' $sameSite = 'none'
); );
$principal->setState $principal->setState
( (
[ [

View File

@ -14,6 +14,7 @@
use OpenId\Requests\OpenIdMessageMemento; use OpenId\Requests\OpenIdMessageMemento;
use OpenId\Services\IMementoOpenIdSerializerService; use OpenId\Services\IMementoOpenIdSerializerService;
use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Log;
/** /**
* Class OpenIdMementoSessionSerializerService * Class OpenIdMementoSessionSerializerService
* @package Services\OpenId * @package Services\OpenId
@ -28,6 +29,7 @@ class OpenIdMementoSessionSerializerService implements IMementoOpenIdSerializerS
public function serialize(OpenIdMessageMemento $memento) public function serialize(OpenIdMessageMemento $memento)
{ {
$state = base64_encode(json_encode($memento->getState())); $state = base64_encode(json_encode($memento->getState()));
Log::debug(sprintf("OpenIdMementoSessionSerializerService::serialize %s", $state));
Session::put('openid.request.state', $state); Session::put('openid.request.state', $state);
Session::save(); Session::save();
} }
@ -37,9 +39,14 @@ class OpenIdMementoSessionSerializerService implements IMementoOpenIdSerializerS
*/ */
public function load() public function load()
{ {
Log::debug(sprintf("OpenIdMementoSessionSerializerService::load"));
$state = Session::get('openid.request.state', null); $state = Session::get('openid.request.state', null);
if(is_null($state)) return null; if(is_null($state)) {
Log::warning(sprintf("OpenIdMementoSessionSerializerService::load openid.request.state is null"));
return null;
}
$state = json_decode( base64_decode($state), true); $state = json_decode( base64_decode($state), true);
@ -51,6 +58,7 @@ class OpenIdMementoSessionSerializerService implements IMementoOpenIdSerializerS
*/ */
public function forget() public function forget()
{ {
Log::debug(sprintf("OpenIdMementoSessionSerializerService::forget"));
Session::remove('openid.request.state'); Session::remove('openid.request.state');
Session::save(); Session::save();
} }
@ -60,6 +68,7 @@ class OpenIdMementoSessionSerializerService implements IMementoOpenIdSerializerS
*/ */
public function exists() public function exists()
{ {
Log::debug(sprintf("OpenIdMementoSessionSerializerService::exists"));
return Session::has('openid.request.state'); return Session::has('openid.request.state');
} }
} }

View File

@ -11,6 +11,8 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use OpenId\Services\NonceUniqueIdentifierGenerator; use OpenId\Services\NonceUniqueIdentifierGenerator;
@ -20,9 +22,7 @@ use Utils\Services\UtilsServiceCatalog;
* Class OpenIdProvider * Class OpenIdProvider
* @package Services\OpenId * @package Services\OpenId
*/ */
final class OpenIdProvider extends ServiceProvider { final class OpenIdProvider extends ServiceProvider implements DeferrableProvider {
protected $defer = true;
/** /**
* Register the service provider. * Register the service provider.

View File

@ -292,12 +292,12 @@ final class UserService extends AbstractService implements IUserService
if($former_email != $user->getEmail()){ if($former_email != $user->getEmail()){
Log::warning(sprintf("UserService::update use id %s - email changed old %s - email new %s", $id, $former_email , $user->getEmail())); Log::warning(sprintf("UserService::update use id %s - email changed old %s - email new %s", $id, $former_email , $user->getEmail()));
$user->clearEmailVerification(); $user->clearEmailVerification();
Event::fire(new UserEmailUpdated($user->getId())); Event::dispatch(new UserEmailUpdated($user->getId()));
} }
if($former_password != $user->getPassword()){ if($former_password != $user->getPassword()){
Log::warning(sprintf("UserService::update use id %s - password changed", $id)); Log::warning(sprintf("UserService::update use id %s - password changed", $id));
Event::fire(new UserPasswordResetSuccessful($user->getId())); Event::dispatch(new UserPasswordResetSuccessful($user->getId()));
} }
return $user; return $user;
}); });

View File

@ -24,6 +24,7 @@ use App\Services\Auth\RocketChatSSOService;
use App\Services\Auth\StreamChatSSOService; use App\Services\Auth\StreamChatSSOService;
use App\Services\Auth\IStreamChatSSOService; use App\Services\Auth\IStreamChatSSOService;
use App\Services\Auth\UserService; use App\Services\Auth\UserService;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Services\SecurityPolicies\AuthorizationCodeRedeemPolicy; use Services\SecurityPolicies\AuthorizationCodeRedeemPolicy;
use Services\SecurityPolicies\OAuth2SecurityPolicy; use Services\SecurityPolicies\OAuth2SecurityPolicy;
@ -35,10 +36,8 @@ use Illuminate\Support\Facades\App;
* Class ServicesProvider * Class ServicesProvider
* @package Services * @package Services
*/ */
final class ServicesProvider extends ServiceProvider final class ServicesProvider extends ServiceProvider implements DeferrableProvider
{ {
protected $defer = true;
public function boot(){ public function boot(){
} }

View File

@ -14,6 +14,7 @@
use App\Models\Utils\BaseEntity; use App\Models\Utils\BaseEntity;
use App\Repositories\IServerConfigurationRepository; use App\Repositories\IServerConfigurationRepository;
use App\Services\Utils\DoctrineTransactionService; use App\Services\Utils\DoctrineTransactionService;
use Illuminate\Contracts\Support\DeferrableProvider;
use Utils\Services\UtilsServiceCatalog; use Utils\Services\UtilsServiceCatalog;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
@ -21,9 +22,7 @@ use Illuminate\Support\Facades\App;
* Class UtilsProvider * Class UtilsProvider
* @package Services\Utils * @package Services\Utils
*/ */
final class UtilsProvider extends ServiceProvider { final class UtilsProvider extends ServiceProvider implements DeferrableProvider {
protected $defer = true;
/** /**
* Register the service provider. * Register the service provider.

View File

@ -11,6 +11,8 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use OAuth2\Responses\OAuth2DirectResponse; use OAuth2\Responses\OAuth2DirectResponse;
@ -26,11 +28,9 @@ use OAuth2\Services\OAuth2ServiceCatalog;
* Class StrategyProvider * Class StrategyProvider
* @package Strategies * @package Strategies
*/ */
final class StrategyProvider extends ServiceProvider final class StrategyProvider extends ServiceProvider implements DeferrableProvider
{ {
protected $defer = true;
public function boot() public function boot()
{ {
} }

View File

@ -300,6 +300,7 @@ final class AuthService implements IAuthService
$rps .= '|'; $rps .= '|';
} }
if(is_null($rps)) $rps = ""; if(is_null($rps)) $rps = "";
if (!str_contains($rps, $client_id)) if (!str_contains($rps, $client_id))
$rps .= $client_id; $rps .= $client_id;

View File

@ -11,6 +11,8 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Utils\Services\UtilsServiceCatalog; use Utils\Services\UtilsServiceCatalog;
@ -18,11 +20,9 @@ use Utils\Services\UtilsServiceCatalog;
* Class AuthenticationServiceProvider * Class AuthenticationServiceProvider
* @package auth * @package auth
*/ */
final class AuthenticationServiceProvider extends ServiceProvider final class AuthenticationServiceProvider extends ServiceProvider implements DeferrableProvider
{ {
protected $defer = true;
public function boot() public function boot()
{ {
} }

View File

@ -889,7 +889,7 @@ class User extends BaseEntity
public function lock() public function lock()
{ {
$this->deActivate(); $this->deActivate();
Event::fire(new UserLocked($this->getId())); Event::dispatch(new UserLocked($this->getId()));
return $this; return $this;
} }
@ -1463,7 +1463,7 @@ SQL;
if(!$this->active) { if(!$this->active) {
$this->active = true; $this->active = true;
$this->spam_type = self::SpamTypeHam; $this->spam_type = self::SpamTypeHam;
Event::fire(new UserSpamStateUpdated( Event::dispatch(new UserSpamStateUpdated(
$this->getId() $this->getId()
) )
); );
@ -1474,7 +1474,7 @@ SQL;
if( $this->active) { if( $this->active) {
$this->active = false; $this->active = false;
$this->spam_type = self::SpamTypeSpam; $this->spam_type = self::SpamTypeSpam;
Event::fire(new UserSpamStateUpdated( Event::dispatch(new UserSpamStateUpdated(
$this->getId() $this->getId()
) )
); );
@ -1494,11 +1494,11 @@ SQL;
$this->active = true; $this->active = true;
$this->lock = false; $this->lock = false;
$this->email_verified_date = new \DateTime('now', new \DateTimeZone('UTC')); $this->email_verified_date = new \DateTime('now', new \DateTimeZone('UTC'));
Event::fire(new UserEmailVerified( Event::dispatch(new UserEmailVerified(
$this->getId() $this->getId()
) )
); );
Event::fire(new UserSpamStateUpdated( Event::dispatch(new UserSpamStateUpdated(
$this->getId() $this->getId()
) )
); );
@ -1561,7 +1561,7 @@ SQL;
*/ */
public function postPersist($args) public function postPersist($args)
{ {
Event::fire(new UserCreated($this->getId())); Event::dispatch(new UserCreated($this->getId()));
} }
/** /**
@ -1585,7 +1585,7 @@ SQL;
// enqueue user for spam re checker // enqueue user for spam re checker
Log::warning(sprintf("User::preUpdate user %s was marked for spam type reclasification.", $this->email)); Log::warning(sprintf("User::preUpdate user %s was marked for spam type reclasification.", $this->email));
$this->resetSpamTypeClassification(); $this->resetSpamTypeClassification();
Event::fire(new UserSpamStateUpdated($this->getId())); Event::dispatch(new UserSpamStateUpdated($this->getId()));
} }
} }
} }

View File

@ -165,6 +165,6 @@ class UserPasswordResetRequest extends BaseEntity
* @ORM\PostPersist * @ORM\PostPersist
*/ */
public function inserted($args){ public function inserted($args){
Event::fire(new UserPasswordResetRequestCreated($this->getId())); Event::dispatch(new UserPasswordResetRequestCreated($this->getId()));
} }
} }

View File

@ -11,15 +11,16 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\App;
/** /**
* Class OAuth2ServiceProvider * Class OAuth2ServiceProvider
* @package OAuth2 * @package OAuth2
*/ */
final class OAuth2ServiceProvider extends ServiceProvider final class OAuth2ServiceProvider extends ServiceProvider implements DeferrableProvider
{ {
protected $defer = true;
public function boot() public function boot()
{ {

View File

@ -11,6 +11,8 @@
* See the License for the specific language governing permissions and * See the License for the specific language governing permissions and
* limitations under the License. * limitations under the License.
**/ **/
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider; use Illuminate\Support\ServiceProvider;
use OpenId\Extensions\OpenIdAuthenticationExtension; use OpenId\Extensions\OpenIdAuthenticationExtension;
use OpenId\Services\OpenIdServiceCatalog; use OpenId\Services\OpenIdServiceCatalog;
@ -21,9 +23,7 @@ use Illuminate\Support\Facades\App;
* Register dependencies with IOC container for package openid * Register dependencies with IOC container for package openid
* @package OpenId * @package OpenId
*/ */
class OpenIdServiceProvider extends ServiceProvider { class OpenIdServiceProvider extends ServiceProvider implements DeferrableProvider {
protected $defer = true;
public function boot(){ public function boot(){
} }

View File

@ -0,0 +1,176 @@
<?php namespace App\libs\Utils\Doctrine;
/**
* Copyright 2021 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
use Doctrine\DBAL\Platforms\AbstractPlatform;
use Doctrine\ORM\Mapping\QuoteStrategy;
use Doctrine\ORM\Mapping\ClassMetadata;
/**
* A set of rules for determining the physical column, alias and table quotes and automatically escape database reserved
* keyword.
*
*/
class EscapingQuoteStrategy implements QuoteStrategy
{
/**
* {@inheritdoc}
*/
public function getColumnName($fieldName, ClassMetadata $class, AbstractPlatform $platform)
{
if (isset($class->fieldMappings[$fieldName]['quoted'])) {
return $platform->quoteIdentifier($class->fieldMappings[$fieldName]['columnName']);
}
$reservedKeyList = $platform->getReservedKeywordsList();
if ($reservedKeyList->isKeyword($fieldName)) {
return $platform->quoteIdentifier($class->fieldMappings[$fieldName]['columnName']);
}
return $class->fieldMappings[$fieldName]['columnName'];
}
/**
* {@inheritdoc}
*/
public function getTableName(ClassMetadata $class, AbstractPlatform $platform)
{
if (isset($class->table['quoted'])) {
return $platform->quoteIdentifier($class->table['name']);
}
$reservedKeyList = $platform->getReservedKeywordsList();
if ($reservedKeyList->isKeyword($class->table['name'])) {
return $platform->quoteIdentifier($class->table['name']);
}
return $class->table['name'];
}
/**
* {@inheritdoc}
*/
public function getSequenceName(array $definition, ClassMetadata $class, AbstractPlatform $platform)
{
if (isset($definition['quoted'])) {
return $platform->quoteIdentifier($class->table['name']);
}
$reservedKeyList = $platform->getReservedKeywordsList();
if ($reservedKeyList->isKeyword($definition['sequenceName'])) {
return $platform->quoteIdentifier($definition['sequenceName']);
}
return $definition['sequenceName'];
}
/**
* {@inheritdoc}
*/
public function getJoinColumnName(array $joinColumn, ClassMetadata $class, AbstractPlatform $platform)
{
if (isset($joinColumn['quoted'])) {
return $platform->quoteIdentifier($joinColumn['name']);
}
$reservedKeyList = $platform->getReservedKeywordsList();
if ($reservedKeyList->isKeyword($joinColumn['name'])) {
return $platform->quoteIdentifier($joinColumn['name']);
}
return $joinColumn['name'];
}
/**
* {@inheritdoc}
*/
public function getReferencedJoinColumnName(array $joinColumn, ClassMetadata $class, AbstractPlatform $platform)
{
if (isset($joinColumn['quoted'])) {
return $platform->quoteIdentifier($joinColumn['referencedColumnName']);
}
$reservedKeyList = $platform->getReservedKeywordsList();
if ($reservedKeyList->isKeyword($joinColumn['referencedColumnName'])) {
return $platform->quoteIdentifier($joinColumn['referencedColumnName']);
}
return $joinColumn['referencedColumnName'];
}
/**
* {@inheritdoc}
*/
public function getJoinTableName(array $association, ClassMetadata $class, AbstractPlatform $platform)
{
if (isset($association['joinTable']['quoted'])) {
return $platform->quoteIdentifier($association['joinTable']['name']);
}
$reservedKeyList = $platform->getReservedKeywordsList();
if ($reservedKeyList->isKeyword($association['joinTable']['name'])) {
return $platform->quoteIdentifier($association['joinTable']['name']);
}
return $association['joinTable']['name'];
}
/**
* {@inheritdoc}
*/
public function getIdentifierColumnNames(ClassMetadata $class, AbstractPlatform $platform)
{
$quotedColumnNames = array();
foreach ($class->identifier as $fieldName) {
if (isset($class->fieldMappings[$fieldName])) {
$quotedColumnNames[] = $this->getColumnName($fieldName, $class, $platform);
continue;
}
// Association defined as Id field
$joinColumns = $class->associationMappings[$fieldName]['joinColumns'];
$assocQuotedColumnNames = array_map(
function ($joinColumn) use ($platform) {
if (isset($joinColumn['quoted'])) {
return $platform->quoteIdentifier($joinColumn['name']);
}
$reservedKeyList = $platform->getReservedKeywordsList();
if ($reservedKeyList->isKeyword($joinColumn['name'])) {
return $platform->quoteIdentifier($joinColumn['name']);
}
return $joinColumn['name'];
},
$joinColumns
);
$quotedColumnNames = array_merge($quotedColumnNames, $assocQuotedColumnNames);
}
return $quotedColumnNames;
}
/**
* {@inheritdoc}
*/
public function getColumnAlias($columnName, $counter, AbstractPlatform $platform, ClassMetadata $class = null)
{
// 1 ) Concatenate column name and counter
// 2 ) Trim the column alias to the maximum identifier length of the platform.
// If the alias is to long, characters are cut off from the beginning.
// 3 ) Strip non alphanumeric characters
// 4 ) Prefix with "_" if the result its numeric
$columnName = $columnName.'_'.$counter;
$columnName = substr($columnName, -$platform->getMaxIdentifierLength());
$columnName = preg_replace('/[^A-Za-z0-9_]/', '', $columnName);
$columnName = is_numeric($columnName) ? '_'.$columnName : $columnName;
return $platform->getSQLResultCasing($columnName);
}
}

View File

@ -25,7 +25,7 @@ class IPHelper
*/ */
public static function getUserIp() public static function getUserIp()
{ {
$ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'] ?? ''; $ip = isset($_SERVER['HTTP_CLIENT_IP']) ? $_SERVER['HTTP_CLIENT_IP'] : (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'] ?? '');
Log::debug(sprintf("IPHelper::getUserIp ip %s", $ip)); Log::debug(sprintf("IPHelper::getUserIp ip %s", $ip));
return $ip; return $ip;
} }

View File

@ -1,21 +1,21 @@
php7.2 [platform:dpkg] php7.4 [platform:dpkg]
php7.2-cli [platform:dpkg] php7.4-cli [platform:dpkg]
php7.2-common [platform:dpkg] php7.4-common [platform:dpkg]
php7.2-curl [platform:dpkg] php7.4-curl [platform:dpkg]
php7.2-gd [platform:dpkg] php7.4-gd [platform:dpkg]
php7.2-json [platform:dpkg] php7.4-json [platform:dpkg]
php7.2-mysqlnd [platform:dpkg] php7.4-mysqlnd [platform:dpkg]
php7.2-xml [platform:dpkg] php7.4-xml [platform:dpkg]
php7.2-mbstring [platform:dpkg] php7.4-mbstring [platform:dpkg]
php7.2-gmp [platform:dpkg] php7.4-gmp [platform:dpkg]
php7.2-ssh2 [platform:dpkg] php7.4-ssh2 [platform:dpkg]

0
bootstrap/cache/.gitignore vendored Normal file → Executable file
View File

View File

@ -19,38 +19,41 @@
{ {
"type": "vcs", "type": "vcs",
"url": "https://github.com/smarcet/recaptcha" "url": "https://github.com/smarcet/recaptcha"
},
{
"type": "vcs",
"url": "https://github.com/smarcet/doctrine_orm"
} }
], ],
"require": { "require": {
"php": "^7.1.3", "php": "^7.3|^8.0",
"ext-json": "*", "ext-json": "*",
"ext-pdo": "*", "ext-pdo": "*",
"beberlei/doctrineextensions": "1.1.5", "laravel/framework": "^8.0",
"laravel/helpers": "^1.4",
"laravel/tinker": "^2.5",
"laravelcollective/html": "6.2.*",
"fruitcake/laravel-cors": "^2.0",
"laravel-doctrine/orm": "1.7.*",
"laravel-doctrine/extensions": "1.4.*",
"laravel-doctrine/migrations": "2.3.*",
"beberlei/doctrineextensions": "1.3.*",
"behat/transliterator": "^1.2", "behat/transliterator": "^1.2",
"doctrine/orm": "2.6.4", "vladimir-yuldashev/laravel-queue-rabbitmq": "v11.1.*",
"doctrine/persistence": "1.1.1", "s-ichikawa/laravel-sendgrid-driver": "~3.0",
"ezyang/htmlpurifier": "v4.12.0", "ezyang/htmlpurifier": "v4.12.0",
"fideloper/proxy": "^4.0", "fideloper/proxy": "^4.4",
"get-stream/stream-chat": "^1.1", "get-stream/stream-chat": "^1.1",
"glenscott/url-normalizer": "1.4.0", "glenscott/url-normalizer": "1.4.0",
"greggilbert/recaptcha": "dev-master", "greggilbert/recaptcha": "dev-feature/laravel8.x",
"guzzlehttp/guzzle": "6.3.3", "guzzlehttp/guzzle": "^7.0.1",
"ircmaxell/random-lib": "1.1.0", "ircmaxell/random-lib": "1.1.0",
"jenssegers/agent": "2.6.3", "jenssegers/agent": "2.6.3",
"laravel-doctrine/extensions": "1.0.14", "php-opencloud/openstack": "dev-feature/guzzle_7_x",
"laravel-doctrine/migrations": "1.2.0",
"laravel-doctrine/orm": "1.4.11",
"laravel/framework": "5.6.39",
"laravel/tinker": "^1.0",
"laravelcollective/html": "5.6.10",
"php-opencloud/openstack": "dev-master",
"phpseclib/phpseclib": "2.0.11", "phpseclib/phpseclib": "2.0.11",
"predis/predis": "v1.0.4", "predis/predis": "v1.1.6",
"s-ichikawa/laravel-sendgrid-driver": "2.1.0",
"smarcet/jose4php": "1.0.17", "smarcet/jose4php": "1.0.17",
"sokil/php-isocodes": "^3.0", "sokil/php-isocodes": "^3.0",
"spatie/laravel-cors": "^1.6",
"vladimir-yuldashev/laravel-queue-rabbitmq": "v7.5.0",
"zendframework/zend-crypt": "3.3.0", "zendframework/zend-crypt": "3.3.0",
"zendframework/zend-math": "3.1.1" "zendframework/zend-math": "3.1.1"
}, },
@ -58,9 +61,9 @@
"filp/whoops": "^2.0", "filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4", "fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0", "mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0", "nunomaduro/collision": "^5.0",
"phpunit/phpunit": "^7.0", "phpunit/phpunit": "^9.0",
"laravel/browser-kit-testing": "4.0.2" "laravel/browser-kit-testing": "6.2.*"
}, },
"suggest":{ "suggest":{
"lib-openssl": "Required to use AES algorithms (except AES GCM)", "lib-openssl": "Required to use AES algorithms (except AES GCM)",
@ -68,8 +71,6 @@
}, },
"autoload": { "autoload": {
"classmap": [ "classmap": [
"database/seeds",
"database/factories",
"database", "database",
"app", "app",
"tests" "tests"
@ -80,7 +81,9 @@
"OAuth2\\": "app/libs/OAuth2/", "OAuth2\\": "app/libs/OAuth2/",
"OpenId\\": "app/libs/OpenId/", "OpenId\\": "app/libs/OpenId/",
"Utils\\": "app/libs/Utils/", "Utils\\": "app/libs/Utils/",
"Models\\": "app/Models/" "Models\\": "app/Models/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
} }
}, },
"autoload-dev": { "autoload-dev": {

6630
composer.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -123,6 +123,7 @@ return [
Illuminate\Foundation\Providers\FoundationServiceProvider::class, Illuminate\Foundation\Providers\FoundationServiceProvider::class,
Illuminate\Hashing\HashServiceProvider::class, Illuminate\Hashing\HashServiceProvider::class,
Illuminate\Mail\MailServiceProvider::class, Illuminate\Mail\MailServiceProvider::class,
Illuminate\Notifications\NotificationServiceProvider::class,
Illuminate\Pagination\PaginationServiceProvider::class, Illuminate\Pagination\PaginationServiceProvider::class,
Illuminate\Pipeline\PipelineServiceProvider::class, Illuminate\Pipeline\PipelineServiceProvider::class,
Illuminate\Queue\QueueServiceProvider::class, Illuminate\Queue\QueueServiceProvider::class,
@ -132,6 +133,11 @@ return [
Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Translation\TranslationServiceProvider::class,
Illuminate\Validation\ValidationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class, Illuminate\View\ViewServiceProvider::class,
/*
* Package Service Providers...
*/
/* /*
* Application Service Providers... * Application Service Providers...
*/ */
@ -139,6 +145,7 @@ return [
Repositories\RepositoriesProvider::class, Repositories\RepositoriesProvider::class,
App\Providers\AppServiceProvider::class, App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class, App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class, App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class, App\Providers\RouteServiceProvider::class,
Services\Utils\UtilsProvider::class, Services\Utils\UtilsProvider::class,
@ -209,7 +216,6 @@ return [
'View' => Illuminate\Support\Facades\View::class, 'View' => Illuminate\Support\Facades\View::class,
'Form' => Collective\Html\FormFacade::class, 'Form' => Collective\Html\FormFacade::class,
'HTML' => Collective\Html\HtmlFacade::class, 'HTML' => Collective\Html\HtmlFacade::class,
'Input' => Illuminate\Support\Facades\Input::class,
'Recaptcha' => Greggilbert\Recaptcha\Facades\Recaptcha::class, 'Recaptcha' => Greggilbert\Recaptcha\Facades\Recaptcha::class,
'ServerConfigurationService' => \Services\Facades\ServerConfigurationService::class, 'ServerConfigurationService' => \Services\Facades\ServerConfigurationService::class,
'ExternalUrlService'=> \Services\Facades\ExternalUrlService::class, 'ExternalUrlService'=> \Services\Facades\ExternalUrlService::class,

View File

@ -3,61 +3,52 @@
return [ return [
/* /*
* A cors profile determines which origins, methods, headers are allowed for |--------------------------------------------------------------------------
* a given requests. The `DefaultProfile` reads its configuration from this | Cross-Origin Resource Sharing (CORS) Configuration
* config file. |--------------------------------------------------------------------------
* |
* You can easily create your own cors profile. | Here you may configure your settings for cross-origin resource sharing
* More info: https://github.com/spatie/laravel-cors/#creating-your-own-cors-profile | or "CORS". This determines what cross-origin operations may execute
*/ | in web browsers. You are free to adjust these settings as needed.
'cors_profile' => Spatie\Cors\CorsProfile\DefaultProfile::class, |
| To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
|
*/
/* 'paths' => ['api/*', 'oauth2/*'],
* This configuration is used by `DefaultProfile`.
*/
'default_profile' => [
'allow_credentials' => false, 'allowed_methods' => [
'POST',
'allow_origins' => [ 'GET',
'*', 'OPTIONS',
], 'PUT',
'PATCH',
'allow_methods' => [ 'DELETE',
'POST',
'GET',
'OPTIONS',
'PUT',
'PATCH',
'DELETE',
],
'allow_headers' => [
'Accept',
'Content-Type',
'X-Auth-Token',
'Origin',
'Authorization',
'X-Requested-With',
],
'expose_headers' => [
'Cache-Control',
'Content-Language',
'Content-Type',
'Expires',
'Last-Modified',
'Pragma',
],
'forbidden_response' => [
'message' => 'Forbidden (cors).',
'status' => 403,
],
/*
* Preflight request will respond with value for the max age header.
*/
'max_age' => 60 * 60 * 24,
], ],
'allowed_origins' => ['*'],
'allowed_origins_patterns' => [],
'allowed_headers' => [
'Accept',
'Content-Type',
'X-Auth-Token',
'Origin',
'Authorization',
'X-Requested-With',
],
'exposed_headers' => [
'Cache-Control',
'Content-Language',
'Content-Type',
'Expires',
'Last-Modified',
'Pragma',
],
'max_age' => 60 * 60 * 24,
'supports_credentials' => false,
]; ];

View File

@ -105,6 +105,8 @@ return [
*/ */
'redis' => [ 'redis' => [
'client' => env('REDIS_CLIENT', 'predis'),
/* /*
* @see https://github.com/predis/predis/wiki/Connection-Parameters * @see https://github.com/predis/predis/wiki/Connection-Parameters
*/ */

View File

@ -1,4 +1,5 @@
<?php <?php
use App\libs\Utils\Doctrine\EscapingQuoteStrategy;
return [ return [
@ -24,6 +25,7 @@ return [
'model' => [ 'model' => [
'dev' => env('APP_DEBUG', false), 'dev' => env('APP_DEBUG', false),
'meta' => env('DOCTRINE_METADATA', 'annotations'), 'meta' => env('DOCTRINE_METADATA', 'annotations'),
'quote_strategy' => EscapingQuoteStrategy::class,
'connection' => 'openstackid', 'connection' => 'openstackid',
'namespaces' => [ 'namespaces' => [
'App' 'App'
@ -236,9 +238,21 @@ return [
], ],
'log_enabled' => true, 'log_enabled' => true,
'file_lock_region_directory' => '/tmp' 'file_lock_region_directory' => '/tmp'
] ],
'metadata' => [
'driver' => env('DOCTRINE_METADATA_CACHE', env('DOCTRINE_CACHE', 'redis')),
'namespace' => null,
],
'query' => [
'driver' => env('DOCTRINE_QUERY_CACHE', env('DOCTRINE_CACHE', 'redis')),
'namespace' => null,
],
'result' => [
'driver' => env('DOCTRINE_RESULT_CACHE', env('DOCTRINE_CACHE', 'redis')),
'namespace' => null,
],
], ],
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Gedmo extensions | Gedmo extensions

4
config/jobs.php Normal file
View File

@ -0,0 +1,4 @@
<?php
return [
'spam_processing_enabled' => env('JOBS_SPAM_PROCESSING_ENABLED', false)
];

View File

@ -1,5 +1,6 @@
<?php <?php
return [ return [
/* /*

View File

@ -1,4 +1,8 @@
<?php <?php
$rabbit_port = intval( env('RABBITMQ_PORT', 5671) );
$rabbit_connection = PhpAmqpLib\Connection\AMQPLazyConnection::class;
if($rabbit_port === 5671)
$rabbit_connection = PhpAmqpLib\Connection\AMQPSSLConnection::class;
return [ return [
@ -48,101 +52,40 @@ return [
'block_for' => 5, 'block_for' => 5,
], ],
// ... // ...
'message_broker' => [ 'message_broker' => [
'driver' => 'rabbitmq', 'driver' => 'rabbitmq',
'dsn' => env('RABBITMQ_DSN', null),
/*
* Could be one a class that implements \Interop\Amqp\AmqpConnectionFactory for example:
* - \EnqueueAmqpExt\AmqpConnectionFactory if you install enqueue/amqp-ext
* - \EnqueueAmqpLib\AmqpConnectionFactory if you install enqueue/amqp-lib
* - \EnqueueAmqpBunny\AmqpConnectionFactory if you install enqueue/amqp-bunny
*/
'factory_class' => Enqueue\AmqpLib\AmqpConnectionFactory::class,
'host' => env('RABBITMQ_HOST', '127.0.0.1'),
'port' => env('RABBITMQ_PORT', 5672),
'vhost' => env('RABBITMQ_VHOST', 'default'),
'login' => env('RABBITMQ_LOGIN', 'guest'),
'password' => env('RABBITMQ_PASSWORD', 'guest'),
'queue' => env('RABBITMQ_QUEUE', ''), 'queue' => env('RABBITMQ_QUEUE', ''),
'connection' => $rabbit_connection,
'options' => [ 'hosts' => [
[
'exchange' => [ 'host' => env('RABBITMQ_HOST', '127.0.0.1'),
'port' => $rabbit_port,
'name' => env('RABBITMQ_EXCHANGE_NAME'), 'user' => env('RABBITMQ_LOGIN', 'guest'),
'password' => env('RABBITMQ_PASSWORD', 'guest'),
/* 'vhost' => env('RABBITMQ_VHOST', '/'),
* Determine if exchange should be created if it does not exist. ],
*/ ],
'options' => [
'declare' => env('RABBITMQ_EXCHANGE_DECLARE', true), 'ssl_options' => [
// @see https://www.php.net/manual/en/context.ssl.php
/* 'cafile' => env('RABBITMQ_SSL_CAFILE', null),
* Read more about possible values at https://www.rabbitmq.com/tutorials/amqp-concepts.html 'local_cert' => env('RABBITMQ_SSL_LOCALCERT', null),
*/ 'local_pk' => env('RABBITMQ_SSL_LOCALKEY', null),
'verify_peer' => env('RABBITMQ_SSL_VERIFY_PEER', true),
'type' => env('RABBITMQ_EXCHANGE_TYPE', \Interop\Amqp\AmqpTopic::TYPE_FANOUT), 'passphrase' => env('RABBITMQ_SSL_PASSPHRASE', null),
'passive' => env('RABBITMQ_EXCHANGE_PASSIVE', false),
'durable' => env('RABBITMQ_EXCHANGE_DURABLE', true),
'auto_delete' => env('RABBITMQ_EXCHANGE_AUTODELETE', true),
'arguments' => env('RABBITMQ_EXCHANGE_ARGUMENTS'),
], ],
'queue' => [ 'queue' => [
'exchange' => env('RABBITMQ_EXCHANGE_NAME'),
/* 'exchange_type' => env('RABBITMQ_EXCHANGE_TYPE', 'fanout'),
* Determine if queue should be created if it does not exist.
*/
'declare' => env('RABBITMQ_QUEUE_DECLARE', false),
/*
* Determine if queue should be binded to the exchange created.
*/
'bind' => env('RABBITMQ_QUEUE_DECLARE_BIND', false),
/*
* Read more about possible values at https://www.rabbitmq.com/tutorials/amqp-concepts.html
*/
'passive' => env('RABBITMQ_QUEUE_PASSIVE', false), 'passive' => env('RABBITMQ_QUEUE_PASSIVE', false),
'durable' => env('RABBITMQ_QUEUE_DURABLE', true), 'durable' => env('RABBITMQ_QUEUE_DURABLE', true),
'exclusive' => env('RABBITMQ_QUEUE_EXCLUSIVE', false), 'exclusive' => env('RABBITMQ_QUEUE_EXCLUSIVE', false),
'auto_delete' => env('RABBITMQ_QUEUE_AUTODELETE', false), 'auto_delete' => env('RABBITMQ_QUEUE_AUTODELETE', true),
'arguments' => env('RABBITMQ_QUEUE_ARGUMENTS'),
], ],
], ],
/*
* Determine the number of seconds to sleep if there's an error communicating with rabbitmq
* If set to false, it'll throw an exception rather than doing the sleep for X seconds.
*/
'sleep_on_error' => env('RABBITMQ_ERROR_SLEEP', 5),
/*
* Optional SSL params if an SSL connection is used
* Using an SSL connection will also require to configure your RabbitMQ to enable SSL. More details can be founds here: https://www.rabbitmq.com/ssl.html
*/
'ssl_params' => [
'ssl_on' => env('RABBITMQ_SSL', false),
'cafile' => env('RABBITMQ_SSL_CAFILE', null),
'local_cert' => env('RABBITMQ_SSL_LOCALCERT', null),
'local_key' => env('RABBITMQ_SSL_LOCALKEY', null),
'verify_peer' => env('RABBITMQ_SSL_VERIFY_PEER', false),
'passphrase' => env('RABBITMQ_SSL_PASSPHRASE', null),
],
], ],
], ],
/* /*

View File

@ -24,7 +24,7 @@ final class Version20190604015804 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$initial_state = <<<SQL $initial_state = <<<SQL
@ -117,7 +117,7 @@ create table if not exists oauth2_api_scope
description text not null, description text not null,
active tinyint(1) default '1' not null, active tinyint(1) default '1' not null,
`default` tinyint(1) default '0' not null, `default` tinyint(1) default '0' not null,
system tinyint(1) default '0' not null, `is_system` tinyint(1) default '0' not null,
created_at timestamp default CURRENT_TIMESTAMP not null, created_at timestamp default CURRENT_TIMESTAMP not null,
updated_at timestamp default CURRENT_TIMESTAMP not null, updated_at timestamp default CURRENT_TIMESTAMP not null,
api_id bigint unsigned null, api_id bigint unsigned null,
@ -687,7 +687,7 @@ SQL;
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
(new Builder($schema))->drop('initial'); (new Builder($schema))->drop('initial');
} }

View File

@ -24,7 +24,7 @@ final class Version20190604015808 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
if($schema->hasTable("openid_users")) { if($schema->hasTable("openid_users")) {
$this->addSql("RENAME TABLE openid_users TO users;"); $this->addSql("RENAME TABLE openid_users TO users;");
@ -36,7 +36,7 @@ final class Version20190604015808 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$this->addSql("RENAME TABLE users TO openid_users;"); $this->addSql("RENAME TABLE users TO openid_users;");

View File

@ -24,7 +24,7 @@ class Version20190604024945 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
@ -105,7 +105,7 @@ class Version20190604024945 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$schema->dropTable("user_groups"); $schema->dropTable("user_groups");
$schema->dropTable("groups"); $schema->dropTable("groups");

View File

@ -24,7 +24,7 @@ final class Version20190609163537 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
@ -49,7 +49,7 @@ final class Version20190609163537 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -24,7 +24,7 @@ class Version20190611172226 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
@ -34,7 +34,7 @@ class Version20190611172226 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -24,7 +24,7 @@ class Version20190614143948 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
@ -43,7 +43,7 @@ class Version20190614143948 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
$builder->drop('user_password_reset_request'); $builder->drop('user_password_reset_request');

View File

@ -22,7 +22,7 @@ class Version20190621173542 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$sql = <<<SQL $sql = <<<SQL
ALTER TABLE openid_trusted_sites DROP FOREIGN KEY openid_trusted_sites_user_id_foreign; ALTER TABLE openid_trusted_sites DROP FOREIGN KEY openid_trusted_sites_user_id_foreign;
@ -64,7 +64,7 @@ SQL;
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -24,14 +24,14 @@ final class Version20190627180435 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
$builder->table('users', function (Table $table) { $builder->table('users', function (Table $table) {
$table->bigInteger("created_by_id")->setUnsigned(true)->setNotnull(false); $table->bigInteger("created_by_id")->setUnsigned(true)->setNotnull(false);
$table->index("created_by_id", "created_by_id"); $table->index("created_by_id", "created_by_id");
$table->foreign("users", "created_by_id", "id"); $table->foreign("users", "created_by_id", "id", ['onDelete' => 'SET NULL']);
$table->dropColumn('lock'); $table->dropColumn('lock');
}); });
} }
@ -39,7 +39,7 @@ final class Version20190627180435 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -24,7 +24,7 @@ final class Version20190729014640 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
@ -54,7 +54,7 @@ final class Version20190729014640 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$schema->dropTable("user_registration_requests"); $schema->dropTable("user_registration_requests");
} }

View File

@ -16,8 +16,7 @@ use Doctrine\DBAL\Schema\Schema as Schema;
use LaravelDoctrine\ORM\Facades\EntityManager; use LaravelDoctrine\ORM\Facades\EntityManager;
use Models\OAuth2\ResourceServer; use Models\OAuth2\ResourceServer;
use Models\OAuth2\Api; use Models\OAuth2\Api;
use ApiScopeSeeder; use Database\Seeders\SeedUtils;
use ApiEndpointSeeder;
use App\libs\OAuth2\IUserScopes; use App\libs\OAuth2\IUserScopes;
/** /**
* Class Version20190729150610 * Class Version20190729150610
@ -28,7 +27,7 @@ final class Version20190729150610 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$resource_server_repository = EntityManager::getRepository(ResourceServer::class); $resource_server_repository = EntityManager::getRepository(ResourceServer::class);
$rs = $resource_server_repository->findOneBy([ $rs = $resource_server_repository->findOneBy([
@ -47,7 +46,7 @@ final class Version20190729150610 extends AbstractMigration
EntityManager::flush(); EntityManager::flush();
\SeedUtils::seedScopes([ SeedUtils::seedScopes([
[ [
'name' => IUserScopes::Registration, 'name' => IUserScopes::Registration,
'short_description' => 'Allows to request user registrations.', 'short_description' => 'Allows to request user registrations.',
@ -59,7 +58,7 @@ final class Version20190729150610 extends AbstractMigration
], 'user-registration'); ], 'user-registration');
\SeedUtils::seedApiEndpoints('user-registration', [ SeedUtils::seedApiEndpoints('user-registration', [
[ [
'name' => 'request-user-registration', 'name' => 'request-user-registration',
'active' => true, 'active' => true,
@ -77,7 +76,7 @@ final class Version20190729150610 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -24,7 +24,7 @@ class Version20190828144355 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if(!$schema->hasTable("queue_jobs")) { if(!$schema->hasTable("queue_jobs")) {
@ -56,7 +56,7 @@ class Version20190828144355 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$schema->dropTable("failed_jobs"); $schema->dropTable("failed_jobs");
$schema->dropTable("jobs"); $schema->dropTable("jobs");

View File

@ -24,7 +24,7 @@ class Version20190828144405 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$this->addSql("ALTER TABLE queue_jobs MODIFY payload longtext NOT NULL;"); $this->addSql("ALTER TABLE queue_jobs MODIFY payload longtext NOT NULL;");
$this->addSql("ALTER TABLE queue_failed_jobs MODIFY payload longtext NOT NULL;"); $this->addSql("ALTER TABLE queue_failed_jobs MODIFY payload longtext NOT NULL;");
@ -34,7 +34,7 @@ class Version20190828144405 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -14,6 +14,7 @@
use App\libs\OAuth2\IUserScopes; use App\libs\OAuth2\IUserScopes;
use Doctrine\Migrations\AbstractMigration; use Doctrine\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema as Schema; use Doctrine\DBAL\Schema\Schema as Schema;
use Database\Seeders\SeedUtils;
/** /**
* Class Version20190829142736 * Class Version20190829142736
* @package Database\Migrations * @package Database\Migrations
@ -23,9 +24,9 @@ class Version20190829142736 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
\SeedUtils::seedScopes([ SeedUtils::seedScopes([
[ [
'name' => IUserScopes::ReadAll, 'name' => IUserScopes::ReadAll,
'short_description' => 'Allows access to users info', 'short_description' => 'Allows access to users info',
@ -36,7 +37,7 @@ class Version20190829142736 extends AbstractMigration
], ],
], 'users'); ], 'users');
\SeedUtils::seedApiEndpoints('users', [ SeedUtils::seedApiEndpoints('users', [
// get users // get users
[ [
'name' => 'get-users', 'name' => 'get-users',
@ -55,7 +56,7 @@ class Version20190829142736 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -26,7 +26,7 @@ class Version20190904133943 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$group = EntityManager::getRepository(Group::class)->findOneBy(['name' => 'super admins']); $group = EntityManager::getRepository(Group::class)->findOneBy(['name' => 'super admins']);
if(is_null($group)){ if(is_null($group)){
@ -87,7 +87,7 @@ class Version20190904133943 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -25,7 +25,7 @@ final class Version20191017190223 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("users") && !$builder->hasColumn("users","gender_specify") ) { if($schema->hasTable("users") && !$builder->hasColumn("users","gender_specify") ) {
@ -38,7 +38,7 @@ final class Version20191017190223 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("users") && $builder->hasColumn("users","gender_specify") ) { if($schema->hasTable("users") && $builder->hasColumn("users","gender_specify") ) {

View File

@ -24,7 +24,7 @@ class Version20191121032755 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$this->addSql("ALTER TABLE users MODIFY identifier varchar(255) DEFAULT NULL;"); $this->addSql("ALTER TABLE users MODIFY identifier varchar(255) DEFAULT NULL;");
$this->addSql("ALTER TABLE users MODIFY gender_specify varchar(255) DEFAULT NULL;"); $this->addSql("ALTER TABLE users MODIFY gender_specify varchar(255) DEFAULT NULL;");
@ -33,7 +33,7 @@ class Version20191121032755 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -24,7 +24,7 @@ class Version20200115152348 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("users") && !$builder->hasColumn("users","twitter_name") ) { if($schema->hasTable("users") && !$builder->hasColumn("users","twitter_name") ) {
@ -37,7 +37,7 @@ class Version20200115152348 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("users") && $builder->hasColumn("users","twitter_name") ) { if($schema->hasTable("users") && $builder->hasColumn("users","twitter_name") ) {

View File

@ -26,7 +26,7 @@ class Version20200306133045 extends AbstractMigration
* @param Schema $schema * @param Schema $schema
* @throws \Doctrine\DBAL\Schema\SchemaException * @throws \Doctrine\DBAL\Schema\SchemaException
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("users") && !$builder->hasColumn("users","spam_type") ) { if($schema->hasTable("users") && !$builder->hasColumn("users","spam_type") ) {
@ -81,7 +81,7 @@ class Version20200306133045 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
$builder->dropIfExists("users_email_changed"); $builder->dropIfExists("users_email_changed");

View File

@ -22,7 +22,7 @@ class Version20200306135446 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$sql = <<<SQL $sql = <<<SQL
ALTER TABLE users MODIFY spam_type ALTER TABLE users MODIFY spam_type
@ -52,7 +52,7 @@ SQL;
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -24,7 +24,7 @@ class Version20200528175450 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
@ -54,7 +54,7 @@ class Version20200528175450 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);

View File

@ -14,7 +14,7 @@
use App\libs\OAuth2\IUserScopes; use App\libs\OAuth2\IUserScopes;
use Doctrine\Migrations\AbstractMigration; use Doctrine\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema as Schema; use Doctrine\DBAL\Schema\Schema as Schema;
use SeedUtils; use Database\Seeders\SeedUtils;
/** /**
* Class Version20200530150357 * Class Version20200530150357
* @package Database\Migrations * @package Database\Migrations
@ -24,7 +24,7 @@ class Version20200530150357 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
if(!SeedUtils::seedApi("sso", "SSO Integration API")) return; if(!SeedUtils::seedApi("sso", "SSO Integration API")) return;
@ -65,7 +65,7 @@ class Version20200530150357 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -24,7 +24,7 @@ class Version20200715150546 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("users") && !$builder->hasColumn("users","company") ) { if($schema->hasTable("users") && !$builder->hasColumn("users","company") ) {
@ -38,7 +38,7 @@ class Version20200715150546 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("users") && $builder->hasColumn("users","company") ) { if($schema->hasTable("users") && $builder->hasColumn("users","company") ) {

View File

@ -25,7 +25,7 @@ class Version20200715195145 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
@ -44,7 +44,7 @@ class Version20200715195145 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);

View File

@ -13,6 +13,7 @@
**/ **/
use Doctrine\Migrations\AbstractMigration; use Doctrine\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema as Schema; use Doctrine\DBAL\Schema\Schema as Schema;
use Database\Seeders\SeedUtils;
/** /**
* Class Version20200715195155 * Class Version20200715195155
* @package Database\Migrations * @package Database\Migrations
@ -22,9 +23,9 @@ final class Version20200715195155 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
\SeedUtils::seedApiEndpoints('sso', [ SeedUtils::seedApiEndpoints('sso', [
[ [
'name' => 'sso-stream-chat', 'name' => 'sso-stream-chat',
'active' => true, 'active' => true,
@ -40,7 +41,7 @@ final class Version20200715195155 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -24,7 +24,7 @@ class Version20200803193707 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("users") && !$builder->hasColumn("users","pic") ) { if($schema->hasTable("users") && !$builder->hasColumn("users","pic") ) {
@ -37,7 +37,7 @@ class Version20200803193707 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);

View File

@ -14,7 +14,7 @@
use App\libs\OAuth2\IUserScopes; use App\libs\OAuth2\IUserScopes;
use Doctrine\Migrations\AbstractMigration; use Doctrine\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema as Schema; use Doctrine\DBAL\Schema\Schema as Schema;
use SeedUtils; use Database\Seeders\SeedUtils;
/** /**
* Class Version20200811151509 * Class Version20200811151509
* @package Database\Migrations * @package Database\Migrations
@ -24,7 +24,7 @@ class Version20200811151509 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
SeedUtils::seedScopes([ SeedUtils::seedScopes([
@ -76,7 +76,7 @@ class Version20200811151509 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -22,7 +22,7 @@ class Version20200910212216 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$group = EntityManager::getRepository(Group::class)->findOneBy(['name' => 'chat qa']); $group = EntityManager::getRepository(Group::class)->findOneBy(['name' => 'chat qa']);
if(is_null($group)){ if(is_null($group)){
@ -50,7 +50,7 @@ class Version20200910212216 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
} }

View File

@ -24,7 +24,7 @@ class Version20201105184620 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("users") && !$builder->hasColumn("users","job_title") ) { if($schema->hasTable("users") && !$builder->hasColumn("users","job_title") ) {
@ -37,7 +37,7 @@ class Version20201105184620 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("users") && $builder->hasColumn("users","job_title") ) { if($schema->hasTable("users") && $builder->hasColumn("users","job_title") ) {

View File

@ -24,7 +24,7 @@ class Version20201214162511 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function up(Schema $schema) public function up(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("oauth2_client") && !$builder->hasColumn("oauth2_client","pkce_enabled") ) { if($schema->hasTable("oauth2_client") && !$builder->hasColumn("oauth2_client","pkce_enabled") ) {
@ -37,7 +37,7 @@ class Version20201214162511 extends AbstractMigration
/** /**
* @param Schema $schema * @param Schema $schema
*/ */
public function down(Schema $schema) public function down(Schema $schema):void
{ {
$builder = new Builder($schema); $builder = new Builder($schema);
if($schema->hasTable("oauth2_client") && $builder->hasColumn("oauth2_client","pkce_enabled") ) { if($schema->hasTable("oauth2_client") && $builder->hasColumn("oauth2_client","pkce_enabled") ) {

View File

@ -0,0 +1,48 @@
<?php namespace Database\Migrations;
/**
* Copyright 2020 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
use Doctrine\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema as Schema;
use LaravelDoctrine\Migrations\Schema\Builder;
use LaravelDoctrine\Migrations\Schema\Table;
/**
* Class Version20210303161116
* @package Database\Migrations
*/
class Version20210303161116 extends AbstractMigration
{
/**
* @param Schema $schema
*/
public function up(Schema $schema): void
{
// make enum
$builder = new Builder($schema);
if($schema->hasTable("oauth2_api_scope") && $builder->hasColumn('oauth2_api_scope','system')) {
$sql = <<<SQL
alter table oauth2_api_scope change `system` is_system tinyint(1) default 0 not null;
SQL;
$this->addSql($sql);
}
}
/**
* @param Schema $schema
*/
public function down(Schema $schema): void
{
}
}

View File

@ -1,4 +1,4 @@
<?php <?php namespace Database\Seeders;
/** /**
* Copyright 2015 OpenStack Foundation * Copyright 2015 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");

View File

@ -1,4 +1,4 @@
<?php <?php namespace Database\Seeders;
/** /**
* Copyright 2015 OpenStack Foundation * Copyright 2015 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");

View File

@ -1,4 +1,4 @@
<?php <?php namespace Database\Seeders;
/** /**
* Copyright 2017 OpenStack Foundation * Copyright 2017 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");

View File

@ -1,4 +1,4 @@
<?php <?php namespace Database\Seeders;
/** /**
* Copyright 2015 OpenStack Foundation * Copyright 2015 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");

View File

@ -1,4 +1,4 @@
<?php <?php namespace Database\Seeders;
/** /**
* Copyright 2015 OpenStack Foundation * Copyright 2015 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");

View File

@ -1,4 +1,4 @@
<?php <?php namespace Database\Seeders;
/** /**
* Copyright 2015 OpenStack Foundation * Copyright 2015 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");

View File

@ -1,4 +1,4 @@
<?php <?php namespace Database\Seeders;
/** /**
* Copyright 2020 OpenStack Foundation * Copyright 2020 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");

View File

@ -1,4 +1,4 @@
<?php <?php namespace Database\Seeders;
/** /**
* Copyright 2015 OpenStack Foundation * Copyright 2015 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");

View File

@ -1,4 +1,4 @@
<?php <?php namespace Database\Seeders;
/** /**
* Copyright 2015 OpenStack Foundation * Copyright 2015 OpenStack Foundation
* Licensed under the Apache License, Version 2.0 (the "License"); * Licensed under the Apache License, Version 2.0 (the "License");
@ -48,6 +48,8 @@ use App\Models\OAuth2\Factories\ApiEndpointFactory;
use App\libs\OAuth2\IUserScopes; use App\libs\OAuth2\IUserScopes;
use App\libs\Auth\Models\IGroupSlugs; use App\libs\Auth\Models\IGroupSlugs;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use DateTimeZone;
use TestKeys;
/** /**
* Class OAuth2ApplicationSeeder * Class OAuth2ApplicationSeeder
* This seeder is only for testing purposes * This seeder is only for testing purposes

Some files were not shown because too many files have changed in this diff Show More