Add OAuth module from repository
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
All checks were successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
0
modules/OAuth/Providers/.gitkeep
Executable file
0
modules/OAuth/Providers/.gitkeep
Executable file
194
modules/OAuth/Providers/OAuthServiceProvider.php
Executable file
194
modules/OAuth/Providers/OAuthServiceProvider.php
Executable file
@@ -0,0 +1,194 @@
|
||||
<?php
|
||||
|
||||
namespace Modules\OAuth\Providers;
|
||||
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Illuminate\Database\Eloquent\Factory;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
define('SAMPLE_OAUTH', 'oauth');
|
||||
|
||||
class OAuthServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Indicates if loading of the provider is deferred.
|
||||
*
|
||||
* @var bool
|
||||
*/
|
||||
protected $defer = false;
|
||||
|
||||
/**
|
||||
* Boot the application events.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function boot()
|
||||
{
|
||||
$this->registerConfig();
|
||||
$this->registerViews();
|
||||
$this->registerFactories();
|
||||
$this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations');
|
||||
$this->hooks();
|
||||
}
|
||||
|
||||
/**
|
||||
* Module hooks.
|
||||
*/
|
||||
public function hooks()
|
||||
{
|
||||
\Eventy::addFilter('settings.sections', function($sections) {
|
||||
$sections['oauth'] = ['title' => __('OAuth'), 'icon' => 'user', 'order' => 700];
|
||||
|
||||
return $sections;
|
||||
}, 30);
|
||||
|
||||
// Section settings
|
||||
\Eventy::addFilter('settings.section_settings', function($settings, $section) {
|
||||
|
||||
if ($section != 'oauth') {
|
||||
return $settings;
|
||||
}
|
||||
|
||||
$settings = \Option::getOptions([
|
||||
'oauth.active',
|
||||
'oauth.client_id',
|
||||
'oauth.client_secret',
|
||||
'oauth.auth_url',
|
||||
'oauth.token_url',
|
||||
'oauth.user_url',
|
||||
]);
|
||||
|
||||
return $settings;
|
||||
}, 20, 2);
|
||||
|
||||
// Section parameters.
|
||||
\Eventy::addFilter('settings.section_params', function($params, $section) {
|
||||
if ($section != 'oauth') {
|
||||
return $params;
|
||||
}
|
||||
|
||||
$params = [
|
||||
'template_vars' => [],
|
||||
'validator_rules' => [],
|
||||
];
|
||||
|
||||
return $params;
|
||||
}, 20, 2);
|
||||
|
||||
// Settings view name
|
||||
\Eventy::addFilter('settings.view', function($view, $section) {
|
||||
if ($section != 'oauth') {
|
||||
return $view;
|
||||
} else {
|
||||
return 'oauth::index';
|
||||
}
|
||||
}, 20, 2);
|
||||
|
||||
\Eventy::addFilter('middleware.web.custom_handle.response', function($prev, $rq, $next) {
|
||||
$path = $rq->path();
|
||||
$loggedIn = Auth::check();
|
||||
|
||||
$settings = \Option::getOptions([
|
||||
'oauth.active',
|
||||
'oauth.client_id',
|
||||
'oauth.auth_url',
|
||||
]);
|
||||
|
||||
if (!$rq->get('disable_oauth', false) && $path == 'login' && !$loggedIn &&
|
||||
$settings['oauth.active'] == 'on') {
|
||||
|
||||
$con = '?';
|
||||
if (strpos($settings['oauth.auth_url'], '?') !== false) {
|
||||
$con = '&';
|
||||
}
|
||||
|
||||
return redirect(
|
||||
sprintf("%s%sclient_id=%s&response_type=code&redirect_uri=%s",
|
||||
$settings['oauth.auth_url'],
|
||||
$con,
|
||||
$settings['oauth.client_id'],
|
||||
route('oauth_callback')
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
return $prev;
|
||||
}, 10, 3);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the service provider.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function register()
|
||||
{
|
||||
$this->registerTranslations();
|
||||
}
|
||||
|
||||
/**
|
||||
* Register config.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function registerConfig()
|
||||
{
|
||||
$this->publishes([
|
||||
__DIR__.'/../Config/config.php' => config_path('oauth.php'),
|
||||
], 'config');
|
||||
$this->mergeConfigFrom(
|
||||
__DIR__.'/../Config/config.php', 'oauth'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register views.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function registerViews()
|
||||
{
|
||||
$viewPath = resource_path('views/modules/oauth');
|
||||
|
||||
$sourcePath = __DIR__.'/../Resources/views';
|
||||
|
||||
$this->publishes([
|
||||
$sourcePath => $viewPath
|
||||
],'views');
|
||||
|
||||
$this->loadViewsFrom(array_merge(array_map(function ($path) {
|
||||
return $path . '/modules/oauth';
|
||||
}, \Config::get('view.paths')), [$sourcePath]), 'oauth');
|
||||
}
|
||||
|
||||
/**
|
||||
* Register translations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function registerTranslations()
|
||||
{
|
||||
$this->loadJsonTranslationsFrom(__DIR__ .'/../Resources/lang');
|
||||
}
|
||||
|
||||
/**
|
||||
* Register an additional directory of factories.
|
||||
* @source https://github.com/sebastiaanluca/laravel-resource-flow/blob/develop/src/Modules/ModuleServiceProvider.php#L66
|
||||
*/
|
||||
public function registerFactories()
|
||||
{
|
||||
if (! app()->environment('production')) {
|
||||
app(Factory::class)->load(__DIR__ . '/../Database/factories');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the services provided by the provider.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function provides()
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user