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 ee47df943e
commit 3ab448a332
128 changed files with 10318 additions and 5590 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
post-run: playbooks/openstackid-release-branch/post.yaml
timeout: 1800
# OpenStackID needs MYSQL 5.7.x and will fail with newer MYSQL, Bionic has Java 5.7.x.
nodeset: ubuntu-bionic
nodeset: ubuntu-focal
- job:
# This is included into the osf/openstackid release pipeline from the
@ -15,16 +14,13 @@
run: playbooks/openstackid-release-master/run.yaml
post-run: playbooks/openstackid-release-master/post.yaml
timeout: 1800
# OpenStackID needs MYSQL 5.7.x and will fail with newer MYSQL, Bionic has Java 5.7.x.
nodeset: ubuntu-bionic
nodeset: ubuntu-focal
- job:
name: openstackid-unittests
run: playbooks/openstackid-unittests/run.yaml
timeout: 1800
# OpenStackID needs MYSQL 5.7.x and will fail with newer MYSQL, Bionic has Java 5.7.x.
nodeset: ubuntu-bionic
nodeset: ubuntu-focal
- project:
name: osf/openstackid
@ -32,12 +28,12 @@
jobs:
- openstackid-unittests
- opendev-tox-docs:
nodeset: ubuntu-bionic
nodeset: ubuntu-focal
gate:
jobs:
- openstackid-unittests
- opendev-tox-docs:
nodeset: ubuntu-bionic
nodeset: ubuntu-focal
post:
jobs:
- openstackid-release-branch

View File

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

View File

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

View File

@ -41,10 +41,10 @@ class Kernel extends ConsoleKernel
*/
protected function schedule(Schedule $schedule)
{
$schedule->command('idp:oauth2-clean')->dailyAt("02:30")->withoutOverlapping();
$schedule->command('idp:openid-clean')->dailyAt("03:30")->withoutOverlapping();
$schedule->command('idp:oauth2-clean')->dailyAt("02:30")->withoutOverlapping()->onOneServer();
$schedule->command('idp:openid-clean')->dailyAt("03:30")->withoutOverlapping()->onOneServer();
// user spammer
$schedule->command('user-spam:rebuild')->dailyAt("02:30")->withoutOverlapping();
$schedule->command('user-spam:process')->dailyAt("03:30")->withoutOverlapping();
$schedule->command('user-spam:rebuild')->dailyAt("02:30")->withoutOverlapping()->onOneServer();
$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
* limitations under the License.
**/
use Exception;
use Throwable;
use Illuminate\Validation\ValidationException;
use Illuminate\Auth\Access\AuthorizationException;
use Illuminate\Database\Eloquent\ModelNotFoundException;
@ -45,7 +45,7 @@ class Handler extends ExceptionHandler
* @param \Exception $e
* @return void
*/
public function report(Exception $e)
public function report(Throwable $e)
{
parent::report($e);
}
@ -57,7 +57,7 @@ class Handler extends ExceptionHandler
* @param \Exception $e
* @return \Illuminate\Http\Response
*/
public function render($request, Exception $e)
public function render($request, Throwable $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\IGroupRepository;
use Auth\Repositories\IUserRepository;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Response;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\View;
@ -493,7 +493,7 @@ class AdminController extends Controller {
public function saveServerConfig(){
$values = Input::all();
$values = Request::all();
$rules = array
(

View File

@ -12,17 +12,12 @@
* limitations under the License.
**/
use App\Http\Controllers\Api\JsonController;
use App\Http\Utils\PagingConstants;
use App\ModelSerializers\SerializerRegistry;
use App\Services\IBaseService;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
use models\utils\IBaseRepository;
use utils\Filter;
use utils\FilterParser;
use utils\OrderParser;
use utils\PagingInfo;
use Utils\Services\ILogService;
use Exception;
use models\exceptions\ValidationException;
@ -84,7 +79,7 @@ abstract class APICRUDController extends JsonController
return $this->ok(SerializerRegistry::getInstance()->getSerializer($entity, $this->serializerType())->serialize
(
Input::get("expand", '')
Request::input("expand", '')
));
}
catch (EntityNotFoundException $ex2)
@ -181,7 +176,7 @@ abstract class APICRUDController extends JsonController
* @return 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 Utils\Services\IBannedIPService;
use Utils\Services\ILogService;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request;
use Exception;
/**
* Class ApiBannedIPController
@ -54,7 +54,7 @@ final class ApiBannedIPController extends APICRUDController
{
try {
$ip = Input::get("ip", null);
$ip = Request::input("ip", null);
if (!is_null($ip)) {
$banned_ip = $this->repository->getByIp(strval($ip));
} else {
@ -89,7 +89,7 @@ final class ApiBannedIPController extends APICRUDController
{
try {
if (is_null($id)) {
$ip = Input::get("ip", null);
$ip = Request::input("ip", null);
} else {
$banned_ip = $this->repository->getById($id);
$ip = $banned_ip->getIp();

View File

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

View File

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

View File

@ -15,7 +15,7 @@
use OAuth2\Services\IClientPublicKeyService;
use Utils\Services\ILogService;
use OAuth2\Repositories\IClientPublicKeyRepository;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request;
/**
* Class ClientPublicKeyApiController
* @package App\Http\Controllers\Api
@ -41,7 +41,7 @@ final class ClientPublicKeyApiController extends AsymmetricKeyApiController
* @return array
*/
protected function getCreatePayload():array{
$payload = Input::All();
$payload = Request::All();
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 Auth\Repositories\IUserRepository;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Log;
use models\exceptions\EntityNotFoundException;
use models\exceptions\ValidationException;
@ -178,7 +178,7 @@ final class GroupApiController extends APICRUDController
*/
public function getUsersFromGroup($group_id)
{
$values = Input::all();
$values = Request::all();
$rules = [
'page' => 'integer|min:1',
@ -198,15 +198,15 @@ final class GroupApiController extends APICRUDController
$page = 1;
$per_page = PagingConstants::DefaultPageSize;;
if (Input::has('page')) {
$page = intval(Input::get('page'));
$per_page = intval(Input::get('per_page'));
if (Request::has('page')) {
$page = intval(Request::input('page'));
$per_page = intval(Request::input('per_page'));
}
$filter = null;
if (Input::has('filter')) {
$filter = FilterParser::parse(Input::get('filter'), [
if (Request::has('filter')) {
$filter = FilterParser::parse(Request::input('filter'), [
'first_name' => ['=@', '=='],
'last_name' => ['=@', '=='],
'email' => ['=@', '=='],
@ -229,11 +229,9 @@ final class GroupApiController extends APICRUDController
$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));
@ -244,7 +242,7 @@ final class GroupApiController extends APICRUDController
(
$data->toArray
(
Input::get('expand', ''),
Request::input('expand', ''),
[],
[],
[],

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -15,12 +15,9 @@ use Closure;
use Illuminate\Support\Facades\Response;
use OAuth2\Repositories\IClientRepository;
use Utils\Services\IAuthService;
use Utils\Services\ServiceLocator;
use Utils\Services\UtilsServiceCatalog;
use OAuth2\Services\OAuth2ServiceCatalog;
use Exception;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Route;
/**
@ -64,7 +61,7 @@ final class CurrentUserCanEditOAuth2Client
$client_id = $route->parameter('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);
$user = $this->auth_service->getCurrentUser();

View File

@ -15,12 +15,9 @@ use Closure;
use Illuminate\Support\Facades\Response;
use OAuth2\Repositories\IClientRepository;
use Utils\Services\IAuthService;
use Utils\Services\ServiceLocator;
use Utils\Services\UtilsServiceCatalog;
use OAuth2\Services\OAuth2ServiceCatalog;
use Exception;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Route;
/**
@ -64,7 +61,7 @@ class CurrentUserOwnsOAuth2Client
$client_id = $route->parameter('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);
$user = $this->auth_service->getCurrentUser();

View File

@ -11,10 +11,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
**/
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Cookie\Middleware\EncryptCookies as Middleware;
use OAuth2\Services\IPrincipalService;
use Symfony\Component\HttpFoundation\Request;
/**
* Class EncryptCookies
* @package App\Http\Middleware
@ -30,30 +28,4 @@ class EncryptCookies extends Middleware
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.
**/
use Closure;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Request;
use Illuminate\Support\Facades\Response;
@ -144,7 +143,7 @@ final class OAuth2BearerAccessTokenRequestValidator
} else {
// http://tools.ietf.org/html/rfc6750#section-2- 2
// 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)) {

View File

@ -23,7 +23,7 @@ use libs\utils\RequestUtils;
*/
class SecurityHTTPHeadersWriterMiddleware
{
/**
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
@ -34,7 +34,7 @@ class SecurityHTTPHeadersWriterMiddleware
{
$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');
// https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
$response->headers->set('X-XSS-Protection','1; mode=block');

View File

@ -13,18 +13,19 @@
**/
use Illuminate\Mail\Message;
use Illuminate\Support\Facades\Log;
use Utils\Services\ICacheService;
use Monolog\Formatter\FormatterInterface;
use Monolog\Handler\MailHandler;
use Monolog\Logger;
use Monolog\Formatter\LineFormatter;
use Illuminate\Support\Facades\Mail;
use Utils\Services\ICacheService;
/**
* Class LaravelMailerHandler
* @package App\Http\Utils\Logs
*/
final class LaravelMailerHandler extends MailHandler
{
// seconds
// in seconds
const TIME_BETWEEN_ERRORS = 60 * 30;
const SENT_ERROR_EMAIL = 'SENT_ERROR_EMAIL';
/**
@ -43,13 +44,13 @@ final class LaravelMailerHandler extends MailHandler
* Optional headers for the message
* @var array
*/
protected $headers = [];
protected $headers = array();
/**
* Optional parameters for the message
* @var array
*/
protected $parameters = [];
protected $parameters = array();
/**
* The wordwrap length for the message
@ -77,30 +78,29 @@ final class LaravelMailerHandler extends MailHandler
private $cacheService;
/**
* LaravelMailerHandler constructor.
* @param ICacheService $cacheService
* @param string|array $to The receiver of the mail
* @param string $subject The subject of the mail
* @param string $from The sender of the mail
* @param int $level The minimum logging level at which this handler will be triggered
* @param bool $bubble Whether the messages that are handled can bubble up the stack or not
* @param int $maxColumnWidth The maximum column width that the message lines will have
* @param $to
* @param $subject
* @param $from
* @param int $level
* @param bool $bubble
* @param int $maxColumnWidth
*/
public function __construct(ICacheService $cacheService, $to, $subject, $from, $level = Logger::ERROR, $bubble = true, $maxColumnWidth = 70)
{
parent::__construct($level, $bubble);
$this->cacheService = $cacheService;
$this->from = $from;
$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->maxColumnWidth = $maxColumnWidth;
$this->cacheService = $cacheService;
}
/**
* Add headers to the message
*
* @param string|array $headers Custom added headers
* @return self
* @param $headers
* @return $this
*/
public function addHeader($headers)
{
@ -130,10 +130,11 @@ final class LaravelMailerHandler extends MailHandler
/**
* {@inheritdoc}
*/
protected function send($content, array $records)
protected function send($content, array $records):void
{
$content = wordwrap($content, $this->maxColumnWidth);
$subject = $this->subject;
if ($records) {
$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));
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) {
@ -207,4 +208,14 @@ final class LaravelMailerHandler extends MailHandler
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;
/**
* @ORM\Column(name="`system`", type="boolean")
* @ORM\Column(name="`is_system`", type="boolean")
* @var bool
*/
private $system;
private $is_system;
/**
* @ORM\Column(name="`assigned_by_groups`", type="boolean")
@ -86,7 +86,7 @@ class ApiScope extends BaseEntity
$this->short_description = null;
$this->active = false;
$this->default = false;
$this->system = false;
$this->is_system = false;
$this->assigned_by_groups = false;
$this->scope_groups = new ArrayCollection();
}
@ -144,21 +144,21 @@ class ApiScope extends BaseEntity
/**
* @return string
*/
public function getApiName():string{
public function getApiName():?string{
return $this->hasApi() ? $this->getApi()->getName(): null;
}
/**
* @return string
*/
public function getApiDescription():string{
public function getApiDescription():?string{
return $this->hasApi() ? $this->getApi()->getDescription(): null;
}
/**
* @return string
*/
public function getApiLogo():string{
public function getApiLogo():?string{
return $this->hasApi() ? $this->getApi()->getLogo(): null;
}
@ -247,15 +247,15 @@ class ApiScope extends BaseEntity
*/
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) {
if($name == 'api_id')
return $this->getApiId();
if($name == 'system')
return $this->isSystem();
return $this->{$name};
}
}

View File

@ -13,6 +13,7 @@
**/
use Illuminate\Routing\Router;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Support\Facades\Route;
/**
* Class RouteServiceProvider
* @package App\Providers
@ -47,7 +48,46 @@ final class RouteServiceProvider extends ServiceProvider
*/
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

@ -32,6 +32,7 @@ use App\Repositories\IServerExtensionRepository;
use Auth\Group;
use Auth\User;
use Auth\UserPasswordResetRequest;
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\Facades\App;
use Illuminate\Support\ServiceProvider;
use Models\BannedIP;
@ -70,10 +71,8 @@ use OpenId\Repositories\IOpenIdTrustedSiteRepository;
* Class RepositoriesProvider
* @package Repositories
*/
final class RepositoriesProvider extends ServiceProvider
final class RepositoriesProvider extends ServiceProvider implements DeferrableProvider
{
protected $defer = true;
public function boot(){
}

View File

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

View File

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

View File

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

View File

@ -42,7 +42,9 @@ final class PrincipalService implements IPrincipalService
$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));
// overwrite it
// overwrite it just in case
Cookie::queue
(
IPrincipalService::OP_BROWSER_STATE_COOKIE_NAME,
@ -55,7 +57,6 @@ final class PrincipalService implements IPrincipalService
$raw = false,
$sameSite = 'none'
);
$principal->setState
(
[

View File

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

View File

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

View File

@ -292,12 +292,12 @@ final class UserService extends AbstractService implements IUserService
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()));
$user->clearEmailVerification();
Event::fire(new UserEmailUpdated($user->getId()));
Event::dispatch(new UserEmailUpdated($user->getId()));
}
if($former_password != $user->getPassword()){
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;
});

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -889,7 +889,7 @@ class User extends BaseEntity
public function lock()
{
$this->deActivate();
Event::fire(new UserLocked($this->getId()));
Event::dispatch(new UserLocked($this->getId()));
return $this;
}
@ -1463,7 +1463,7 @@ SQL;
if(!$this->active) {
$this->active = true;
$this->spam_type = self::SpamTypeHam;
Event::fire(new UserSpamStateUpdated(
Event::dispatch(new UserSpamStateUpdated(
$this->getId()
)
);
@ -1474,7 +1474,7 @@ SQL;
if( $this->active) {
$this->active = false;
$this->spam_type = self::SpamTypeSpam;
Event::fire(new UserSpamStateUpdated(
Event::dispatch(new UserSpamStateUpdated(
$this->getId()
)
);
@ -1494,11 +1494,11 @@ SQL;
$this->active = true;
$this->lock = false;
$this->email_verified_date = new \DateTime('now', new \DateTimeZone('UTC'));
Event::fire(new UserEmailVerified(
Event::dispatch(new UserEmailVerified(
$this->getId()
)
);
Event::fire(new UserSpamStateUpdated(
Event::dispatch(new UserSpamStateUpdated(
$this->getId()
)
);
@ -1561,7 +1561,7 @@ SQL;
*/
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
Log::warning(sprintf("User::preUpdate user %s was marked for spam type reclasification.", $this->email));
$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
*/
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
* limitations under the License.
**/
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\App;
/**
* Class OAuth2ServiceProvider
* @package OAuth2
*/
final class OAuth2ServiceProvider extends ServiceProvider
final class OAuth2ServiceProvider extends ServiceProvider implements DeferrableProvider
{
protected $defer = true;
public function boot()
{

View File

@ -11,6 +11,8 @@
* See the License for the specific language governing permissions and
* limitations under the License.
**/
use Illuminate\Contracts\Support\DeferrableProvider;
use Illuminate\Support\ServiceProvider;
use OpenId\Extensions\OpenIdAuthenticationExtension;
use OpenId\Services\OpenIdServiceCatalog;
@ -21,9 +23,7 @@ use Illuminate\Support\Facades\App;
* Register dependencies with IOC container for package openid
* @package OpenId
*/
class OpenIdServiceProvider extends ServiceProvider {
protected $defer = true;
class OpenIdServiceProvider extends ServiceProvider implements DeferrableProvider {
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()
{
$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));
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",
"url": "https://github.com/smarcet/recaptcha"
},
{
"type": "vcs",
"url": "https://github.com/smarcet/doctrine_orm"
}
],
"require": {
"php": "^7.1.3",
"php": "^7.3|^8.0",
"ext-json": "*",
"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",
"doctrine/orm": "2.6.4",
"doctrine/persistence": "1.1.1",
"vladimir-yuldashev/laravel-queue-rabbitmq": "v11.1.*",
"s-ichikawa/laravel-sendgrid-driver": "~3.0",
"ezyang/htmlpurifier": "v4.12.0",
"fideloper/proxy": "^4.0",
"fideloper/proxy": "^4.4",
"get-stream/stream-chat": "^1.1",
"glenscott/url-normalizer": "1.4.0",
"greggilbert/recaptcha": "dev-master",
"guzzlehttp/guzzle": "6.3.3",
"greggilbert/recaptcha": "dev-feature/laravel8.x",
"guzzlehttp/guzzle": "^7.0.1",
"ircmaxell/random-lib": "1.1.0",
"jenssegers/agent": "2.6.3",
"laravel-doctrine/extensions": "1.0.14",
"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",
"php-opencloud/openstack": "dev-feature/guzzle_7_x",
"phpseclib/phpseclib": "2.0.11",
"predis/predis": "v1.0.4",
"s-ichikawa/laravel-sendgrid-driver": "2.1.0",
"predis/predis": "v1.1.6",
"smarcet/jose4php": "1.0.17",
"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-math": "3.1.1"
},
@ -58,9 +61,9 @@
"filp/whoops": "^2.0",
"fzaninotto/faker": "^1.4",
"mockery/mockery": "^1.0",
"nunomaduro/collision": "^2.0",
"phpunit/phpunit": "^7.0",
"laravel/browser-kit-testing": "4.0.2"
"nunomaduro/collision": "^5.0",
"phpunit/phpunit": "^9.0",
"laravel/browser-kit-testing": "6.2.*"
},
"suggest":{
"lib-openssl": "Required to use AES algorithms (except AES GCM)",
@ -68,8 +71,6 @@
},
"autoload": {
"classmap": [
"database/seeds",
"database/factories",
"database",
"app",
"tests"
@ -80,7 +81,9 @@
"OAuth2\\": "app/libs/OAuth2/",
"OpenId\\": "app/libs/OpenId/",
"Utils\\": "app/libs/Utils/",
"Models\\": "app/Models/"
"Models\\": "app/Models/",
"Database\\Factories\\": "database/factories/",
"Database\\Seeders\\": "database/seeders/"
}
},
"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\Hashing\HashServiceProvider::class,
Illuminate\Mail\MailServiceProvider::class,
Illuminate\Notifications\NotificationServiceProvider::class,
Illuminate\Pagination\PaginationServiceProvider::class,
Illuminate\Pipeline\PipelineServiceProvider::class,
Illuminate\Queue\QueueServiceProvider::class,
@ -132,6 +133,11 @@ return [
Illuminate\Translation\TranslationServiceProvider::class,
Illuminate\Validation\ValidationServiceProvider::class,
Illuminate\View\ViewServiceProvider::class,
/*
* Package Service Providers...
*/
/*
* Application Service Providers...
*/
@ -139,6 +145,7 @@ return [
Repositories\RepositoriesProvider::class,
App\Providers\AppServiceProvider::class,
App\Providers\AuthServiceProvider::class,
// App\Providers\BroadcastServiceProvider::class,
App\Providers\EventServiceProvider::class,
App\Providers\RouteServiceProvider::class,
Services\Utils\UtilsProvider::class,
@ -209,7 +216,6 @@ return [
'View' => Illuminate\Support\Facades\View::class,
'Form' => Collective\Html\FormFacade::class,
'HTML' => Collective\Html\HtmlFacade::class,
'Input' => Illuminate\Support\Facades\Input::class,
'Recaptcha' => Greggilbert\Recaptcha\Facades\Recaptcha::class,
'ServerConfigurationService' => \Services\Facades\ServerConfigurationService::class,
'ExternalUrlService'=> \Services\Facades\ExternalUrlService::class,

View File

@ -3,61 +3,52 @@
return [
/*
* A cors profile determines which origins, methods, headers are allowed for
* a given requests. The `DefaultProfile` reads its configuration from this
* config file.
*
* You can easily create your own cors profile.
* More info: https://github.com/spatie/laravel-cors/#creating-your-own-cors-profile
*/
'cors_profile' => Spatie\Cors\CorsProfile\DefaultProfile::class,
|--------------------------------------------------------------------------
| Cross-Origin Resource Sharing (CORS) Configuration
|--------------------------------------------------------------------------
|
| Here you may configure your settings for cross-origin resource sharing
| or "CORS". This determines what cross-origin operations may execute
| in web browsers. You are free to adjust these settings as needed.
|
| To learn more: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS
|
*/
/*
* This configuration is used by `DefaultProfile`.
*/
'default_profile' => [
'paths' => ['api/*', 'oauth2/*'],
'allow_credentials' => false,
'allow_origins' => [
'*',
],
'allow_methods' => [
'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_methods' => [
'POST',
'GET',
'OPTIONS',
'PUT',
'PATCH',
'DELETE',
],
'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' => [
'client' => env('REDIS_CLIENT', 'predis'),
/*
* @see https://github.com/predis/predis/wiki/Connection-Parameters
*/

View File

@ -1,4 +1,5 @@
<?php
use App\libs\Utils\Doctrine\EscapingQuoteStrategy;
return [
@ -24,6 +25,7 @@ return [
'model' => [
'dev' => env('APP_DEBUG', false),
'meta' => env('DOCTRINE_METADATA', 'annotations'),
'quote_strategy' => EscapingQuoteStrategy::class,
'connection' => 'openstackid',
'namespaces' => [
'App'
@ -236,9 +238,21 @@ return [
],
'log_enabled' => true,
'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

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
return [
/*

View File

@ -1,4 +1,8 @@
<?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 [
@ -48,101 +52,40 @@ return [
'block_for' => 5,
],
// ...
'message_broker' => [
'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', ''),
'options' => [
'exchange' => [
'name' => env('RABBITMQ_EXCHANGE_NAME'),
/*
* Determine if exchange should be created if it does not exist.
*/
'declare' => env('RABBITMQ_EXCHANGE_DECLARE', true),
/*
* Read more about possible values at https://www.rabbitmq.com/tutorials/amqp-concepts.html
*/
'type' => env('RABBITMQ_EXCHANGE_TYPE', \Interop\Amqp\AmqpTopic::TYPE_FANOUT),
'passive' => env('RABBITMQ_EXCHANGE_PASSIVE', false),
'durable' => env('RABBITMQ_EXCHANGE_DURABLE', true),
'auto_delete' => env('RABBITMQ_EXCHANGE_AUTODELETE', true),
'arguments' => env('RABBITMQ_EXCHANGE_ARGUMENTS'),
'connection' => $rabbit_connection,
'hosts' => [
[
'host' => env('RABBITMQ_HOST', '127.0.0.1'),
'port' => $rabbit_port,
'user' => env('RABBITMQ_LOGIN', 'guest'),
'password' => env('RABBITMQ_PASSWORD', 'guest'),
'vhost' => env('RABBITMQ_VHOST', '/'),
],
],
'options' => [
'ssl_options' => [
// @see https://www.php.net/manual/en/context.ssl.php
'cafile' => env('RABBITMQ_SSL_CAFILE', null),
'local_cert' => env('RABBITMQ_SSL_LOCALCERT', null),
'local_pk' => env('RABBITMQ_SSL_LOCALKEY', null),
'verify_peer' => env('RABBITMQ_SSL_VERIFY_PEER', true),
'passphrase' => env('RABBITMQ_SSL_PASSPHRASE', null),
],
'queue' => [
/*
* 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
*/
'exchange' => env('RABBITMQ_EXCHANGE_NAME'),
'exchange_type' => env('RABBITMQ_EXCHANGE_TYPE', 'fanout'),
'passive' => env('RABBITMQ_QUEUE_PASSIVE', false),
'durable' => env('RABBITMQ_QUEUE_DURABLE', true),
'exclusive' => env('RABBITMQ_QUEUE_EXCLUSIVE', false),
'auto_delete' => env('RABBITMQ_QUEUE_AUTODELETE', false),
'arguments' => env('RABBITMQ_QUEUE_ARGUMENTS'),
'auto_delete' => env('RABBITMQ_QUEUE_AUTODELETE', true),
],
],
/*
* 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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$initial_state = <<<SQL
@ -117,7 +117,7 @@ create table if not exists oauth2_api_scope
description text not null,
active tinyint(1) default '1' 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,
updated_at timestamp default CURRENT_TIMESTAMP not null,
api_id bigint unsigned null,
@ -687,7 +687,7 @@ SQL;
/**
* @param Schema $schema
*/
public function down(Schema $schema)
public function down(Schema $schema):void
{
(new Builder($schema))->drop('initial');
}

View File

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

View File

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

View File

@ -24,7 +24,7 @@ final class Version20190609163537 extends AbstractMigration
/**
* @param Schema $schema
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
@ -49,7 +49,7 @@ final class Version20190609163537 extends AbstractMigration
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
@ -34,7 +34,7 @@ class Version20190611172226 extends AbstractMigration
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
@ -43,7 +43,7 @@ class Version20190614143948 extends AbstractMigration
/**
* @param Schema $schema
*/
public function down(Schema $schema)
public function down(Schema $schema):void
{
$builder = new Builder($schema);
$builder->drop('user_password_reset_request');

View File

@ -22,7 +22,7 @@ class Version20190621173542 extends AbstractMigration
/**
* @param Schema $schema
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$sql = <<<SQL
ALTER TABLE openid_trusted_sites DROP FOREIGN KEY openid_trusted_sites_user_id_foreign;
@ -64,7 +64,7 @@ SQL;
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
$builder->table('users', function (Table $table) {
$table->bigInteger("created_by_id")->setUnsigned(true)->setNotnull(false);
$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');
});
}
@ -39,7 +39,7 @@ final class Version20190627180435 extends AbstractMigration
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
@ -54,7 +54,7 @@ final class Version20190729014640 extends AbstractMigration
/**
* @param Schema $schema
*/
public function down(Schema $schema)
public function down(Schema $schema):void
{
$schema->dropTable("user_registration_requests");
}

View File

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

View File

@ -24,7 +24,7 @@ class Version20190828144405 extends AbstractMigration
/**
* @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_failed_jobs MODIFY payload longtext NOT NULL;");
@ -34,7 +34,7 @@ class Version20190828144405 extends AbstractMigration
/**
* @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 Doctrine\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema as Schema;
use Database\Seeders\SeedUtils;
/**
* Class Version20190829142736
* @package Database\Migrations
@ -23,9 +24,9 @@ class Version20190829142736 extends AbstractMigration
/**
* @param Schema $schema
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
\SeedUtils::seedScopes([
SeedUtils::seedScopes([
[
'name' => IUserScopes::ReadAll,
'short_description' => 'Allows access to users info',
@ -36,7 +37,7 @@ class Version20190829142736 extends AbstractMigration
],
], 'users');
\SeedUtils::seedApiEndpoints('users', [
SeedUtils::seedApiEndpoints('users', [
// get users
[
'name' => 'get-users',
@ -55,7 +56,7 @@ class Version20190829142736 extends AbstractMigration
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$group = EntityManager::getRepository(Group::class)->findOneBy(['name' => 'super admins']);
if(is_null($group)){
@ -87,7 +87,7 @@ class Version20190904133943 extends AbstractMigration
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
if($schema->hasTable("users") && !$builder->hasColumn("users","gender_specify") ) {
@ -38,7 +38,7 @@ final class Version20191017190223 extends AbstractMigration
/**
* @param Schema $schema
*/
public function down(Schema $schema)
public function down(Schema $schema):void
{
$builder = new Builder($schema);
if($schema->hasTable("users") && $builder->hasColumn("users","gender_specify") ) {

View File

@ -24,7 +24,7 @@ class Version20191121032755 extends AbstractMigration
/**
* @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 gender_specify varchar(255) DEFAULT NULL;");
@ -33,7 +33,7 @@ class Version20191121032755 extends AbstractMigration
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
if($schema->hasTable("users") && !$builder->hasColumn("users","twitter_name") ) {
@ -37,7 +37,7 @@ class Version20200115152348 extends AbstractMigration
/**
* @param Schema $schema
*/
public function down(Schema $schema)
public function down(Schema $schema):void
{
$builder = new Builder($schema);
if($schema->hasTable("users") && $builder->hasColumn("users","twitter_name") ) {

View File

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

View File

@ -22,7 +22,7 @@ class Version20200306135446 extends AbstractMigration
/**
* @param Schema $schema
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$sql = <<<SQL
ALTER TABLE users MODIFY spam_type
@ -52,7 +52,7 @@ SQL;
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
@ -54,7 +54,7 @@ class Version20200528175450 extends AbstractMigration
/**
* @param Schema $schema
*/
public function down(Schema $schema)
public function down(Schema $schema):void
{
$builder = new Builder($schema);

View File

@ -14,7 +14,7 @@
use App\libs\OAuth2\IUserScopes;
use Doctrine\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema as Schema;
use SeedUtils;
use Database\Seeders\SeedUtils;
/**
* Class Version20200530150357
* @package Database\Migrations
@ -24,7 +24,7 @@ class Version20200530150357 extends AbstractMigration
/**
* @param Schema $schema
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
if(!SeedUtils::seedApi("sso", "SSO Integration API")) return;
@ -65,7 +65,7 @@ class Version20200530150357 extends AbstractMigration
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
if($schema->hasTable("users") && !$builder->hasColumn("users","company") ) {
@ -38,7 +38,7 @@ class Version20200715150546 extends AbstractMigration
/**
* @param Schema $schema
*/
public function down(Schema $schema)
public function down(Schema $schema):void
{
$builder = new Builder($schema);
if($schema->hasTable("users") && $builder->hasColumn("users","company") ) {

View File

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

View File

@ -13,6 +13,7 @@
**/
use Doctrine\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema as Schema;
use Database\Seeders\SeedUtils;
/**
* Class Version20200715195155
* @package Database\Migrations
@ -22,9 +23,9 @@ final class Version20200715195155 extends AbstractMigration
/**
* @param Schema $schema
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
\SeedUtils::seedApiEndpoints('sso', [
SeedUtils::seedApiEndpoints('sso', [
[
'name' => 'sso-stream-chat',
'active' => true,
@ -40,7 +41,7 @@ final class Version20200715195155 extends AbstractMigration
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
if($schema->hasTable("users") && !$builder->hasColumn("users","pic") ) {
@ -37,7 +37,7 @@ class Version20200803193707 extends AbstractMigration
/**
* @param Schema $schema
*/
public function down(Schema $schema)
public function down(Schema $schema):void
{
$builder = new Builder($schema);

View File

@ -14,7 +14,7 @@
use App\libs\OAuth2\IUserScopes;
use Doctrine\Migrations\AbstractMigration;
use Doctrine\DBAL\Schema\Schema as Schema;
use SeedUtils;
use Database\Seeders\SeedUtils;
/**
* Class Version20200811151509
* @package Database\Migrations
@ -24,7 +24,7 @@ class Version20200811151509 extends AbstractMigration
/**
* @param Schema $schema
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
SeedUtils::seedScopes([
@ -76,7 +76,7 @@ class Version20200811151509 extends AbstractMigration
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$group = EntityManager::getRepository(Group::class)->findOneBy(['name' => 'chat qa']);
if(is_null($group)){
@ -50,7 +50,7 @@ class Version20200910212216 extends AbstractMigration
/**
* @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
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
if($schema->hasTable("users") && !$builder->hasColumn("users","job_title") ) {
@ -37,7 +37,7 @@ class Version20201105184620 extends AbstractMigration
/**
* @param Schema $schema
*/
public function down(Schema $schema)
public function down(Schema $schema):void
{
$builder = new Builder($schema);
if($schema->hasTable("users") && $builder->hasColumn("users","job_title") ) {

View File

@ -24,7 +24,7 @@ class Version20201214162511 extends AbstractMigration
/**
* @param Schema $schema
*/
public function up(Schema $schema)
public function up(Schema $schema):void
{
$builder = new Builder($schema);
if($schema->hasTable("oauth2_client") && !$builder->hasColumn("oauth2_client","pkce_enabled") ) {
@ -37,7 +37,7 @@ class Version20201214162511 extends AbstractMigration
/**
* @param Schema $schema
*/
public function down(Schema $schema)
public function down(Schema $schema):void
{
$builder = new Builder($schema);
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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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
* 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\Auth\Models\IGroupSlugs;
use Illuminate\Support\Facades\DB;
use DateTimeZone;
use TestKeys;
/**
* Class OAuth2ApplicationSeeder
* This seeder is only for testing purposes

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