79 lines
2.3 KiB
PHP
79 lines
2.3 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Cloudron SSO
|
||
|
*
|
||
|
* This plugin provides default settings for Cloudron SSO
|
||
|
*
|
||
|
* @package Cloudron SSO
|
||
|
* @category General
|
||
|
* @author Cloudron
|
||
|
* @copyright 2024 Cloudron
|
||
|
* @license http://www.gnu.org/licenses/gpl-2.0.txt GPL-2.0+
|
||
|
* @link https://git.cloudron.io/cloudron/wordpress-managed-app
|
||
|
*
|
||
|
* @wordpress-plugin
|
||
|
* Plugin Name: Cloudron SSO
|
||
|
* Plugin URI: https://git.cloudron.io/cloudron/wordpress-managed-app
|
||
|
* Description: Cloudron SSO Settings
|
||
|
* Version: 1.0.0
|
||
|
* Requires at least: 5.0
|
||
|
* Requires PHP: 7.4
|
||
|
* Author: Cloudron
|
||
|
* Author URI: http://cloudron.io
|
||
|
* Text Domain: cloudron-sso
|
||
|
* Domain Path: /languages
|
||
|
* License: GPL-2.0+
|
||
|
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
|
||
|
* Requires Plugins: openid-connect-generic
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* openid-connect-generic plugin tweaks
|
||
|
*/
|
||
|
|
||
|
/**
|
||
|
* Change login button text
|
||
|
*/
|
||
|
add_filter('openid-connect-generic-login-button-text', function( $text ) {
|
||
|
$text = __('Login with Cloudron');
|
||
|
|
||
|
return $text;
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* Set a default role on OIDC user creating
|
||
|
*/
|
||
|
add_filter('openid-connect-generic-alter-user-data', function( $user_data, $user_claim ) {
|
||
|
// Don't register any user with their real email address. Create a fake internal address.
|
||
|
if ( empty( $user_data['role'] ) ) {
|
||
|
$settings = get_option( 'openid_connect_generic_settings', [] );
|
||
|
$user_data['role'] = isset( $settings['default_role'] ) && ! empty( $settings['default_role'] ) ? $settings['default_role'] : 'editor';
|
||
|
}
|
||
|
|
||
|
return $user_data;
|
||
|
}, 10, 2);
|
||
|
|
||
|
/**
|
||
|
* Add default role select box on the settings page of openid-connect-generic plugin
|
||
|
*/
|
||
|
add_filter('openid-connect-generic-settings-fields', function( $fields ) {
|
||
|
|
||
|
$editable_roles = wp_roles()->roles;
|
||
|
$roles = [];
|
||
|
foreach ($editable_roles as $role => $details) {
|
||
|
$roles[ esc_attr( $role ) ] = translate_user_role( $details['name'] );
|
||
|
}
|
||
|
|
||
|
// A select field for default user role
|
||
|
$fields['default_role'] = array(
|
||
|
'title' => __( 'Default user role', 'cloudron-sso' ),
|
||
|
'description' => __( 'A role set to OIDC users.', 'cloudron-sso' ),
|
||
|
'type' => 'select',
|
||
|
'options' => $roles,
|
||
|
'section' => 'user_settings',
|
||
|
);
|
||
|
|
||
|
return $fields;
|
||
|
});
|