Skip to content

Commit

Permalink
feat(code style): use same conventions than yeswiki core and run php-…
Browse files Browse the repository at this point in the history
…cs-fixer
  • Loading branch information
mrflos committed Aug 1, 2024
1 parent 1311d5e commit a5a6915
Show file tree
Hide file tree
Showing 14 changed files with 314 additions and 192 deletions.
16 changes: 16 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
[*]
end_of_line = lf
insert_final_newline = false
charset = utf-8

[*.php]
indent_style = space
indent_size = 4

[Makefile]
indent_style = tab
indent_size = 4

[*.{html,js,json}]
indent_style = space
indent_size = 2
92 changes: 92 additions & 0 deletions .php-cs-fixer.dist.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
<?php

$finder = PhpCsFixer\Finder::create()
->in(__DIR__)
->name('*.php')
->exclude('vendor')
->exclude('cache')
->exclude('node_modules');

$rules = [
'@PSR12' => true, // Start with PSR-12 rules
'@Symfony' => true, // Add Symfony rules for more comprehensive formatting
// Additional custom rules
// https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/blob/master/doc/rules/index.rst
'array_indentation' => true,
'array_syntax' => ['syntax' => 'short'],
'binary_operator_spaces' => [
'default' => 'single_space',
],
'yoda_style' => false,
'blank_line_after_namespace' => true,
'blank_line_after_opening_tag' => true,
'increment_style' => ['style' => 'post'],
'blank_line_before_statement' => [
'statements' => ['return'],
],
'cast_spaces' => ['space' => 'none'],
'class_attributes_separation' => [
'elements' => ['method' => 'one'],
],
'concat_space' => ['spacing' => 'one'],
'declare_equal_normalize' => ['space' => 'none'],
'function_declaration' => ['closure_function_spacing' => 'one'],
'include' => true,
'indentation_type' => true,
'lowercase_cast' => true,
'method_argument_space' => ['on_multiline' => 'ensure_fully_multiline'],
'new_with_braces' => true,
'no_blank_lines_after_class_opening' => true,
'no_blank_lines_after_phpdoc' => true,
'no_empty_statement' => true,
'no_extra_blank_lines' => [
'tokens' => [
'extra',
'throw',
'use',
'use_trait',
'curly_brace_block',
'parenthesis_brace_block',
'square_brace_block',
'switch',
'case',
'default',
],
],
'no_leading_import_slash' => true,
'no_leading_namespace_whitespace' => true,
'no_mixed_echo_print' => ['use' => 'echo'],
'no_multiline_whitespace_around_double_arrow' => true,
'no_short_bool_cast' => true,
'no_singleline_whitespace_before_semicolons' => true,
'no_spaces_around_offset' => ['positions' => ['inside', 'outside']],
'no_trailing_comma_in_singleline_array' => true,
'no_trailing_whitespace' => true,
'no_trailing_whitespace_in_comment' => true,
'no_unused_imports' => true,
'no_whitespace_before_comma_in_array' => true,
'no_whitespace_in_blank_line' => true,
'normalize_index_brace' => true,
'object_operator_without_whitespace' => true,
'ordered_imports' => ['sort_algorithm' => 'alpha'],
'semicolon_after_instruction' => true,
'short_scalar_cast' => true,
'single_blank_line_at_eof' => true,
'single_class_element_per_statement' => ['elements' => ['property']],
'single_import_per_statement' => true,
'single_line_after_imports' => true,
'single_quote' => true,
'space_after_semicolon' => ['remove_in_empty_for_expressions' => true],
'standardize_not_equals' => true,
'switch_case_semicolon_to_colon' => true,
'switch_case_space' => true,
'trailing_comma_in_multiline' => ['elements' => ['arrays']],
'trim_array_spaces' => true,
'unary_operator_spaces' => true,
'whitespace_after_comma_in_array' => true,
];

return (new PhpCsFixer\Config())
->setRules($rules)
->setFinder($finder)
->setUsingCache(false); // Adjust cache settings as needed
70 changes: 33 additions & 37 deletions actions/LoginAction.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,9 @@

namespace YesWiki\LoginSso;

use Symfony\Component\HttpFoundation\Request;
use YesWiki\LoginSso\Service\OAuth2ProviderFactory;
use YesWiki\Core\Controller\AuthController;
use YesWiki\Core\Service\TemplateEngine;
use YesWiki\Core\Service\PageManager;
use YesWiki\Core\Service\UserManager;
use YesWiki\Login\Exception\LoginException;
use YesWiki\Core\YesWikiAction;
use YesWiki\LoginSso\Service\OAuth2ProviderFactory;

class LoginAction extends YesWikiAction
{
Expand All @@ -19,16 +14,18 @@ public function run()
{
$this->authController = $this->getService(AuthController::class);

$action = $_REQUEST["action"] ?? '';
$action = $_REQUEST['action'] ?? '';
switch ($action) {
case "connectOAUTH":
$this->redirectOAuth((int) $_REQUEST["provider"]);
case 'connectOAUTH':
$this->redirectOAuth((int)$_REQUEST['provider']);
break;
case "logout":
$this->logout();
case 'logout':
$this->logout();
// no break
default:
return $this->renderDefault();
}

return null;
}

Expand All @@ -37,14 +34,14 @@ private function validateConfig()
// Verification si le fichier de conf est bien renseigné dans toutes les lignes du tableau
$allGood = true;
$error = [];
foreach($this->wiki->config['sso_config']['providers'] as $id => $confEntry) {
foreach ($this->wiki->config['sso_config']['providers'] as $id => $confEntry) {
if (strtolower($confEntry['auth_type']) == strtolower('oauth2')) {
if (
empty($confEntry['auth_options']['clientId']) ||
empty($confEntry['auth_options']['clientSecret']) ||
empty($confEntry['auth_options']['urlAuthorize']) ||
empty($confEntry['auth_options']['urlAccessToken']) ||
empty($confEntry['auth_options']['urlResourceOwnerDetails'])
empty($confEntry['auth_options']['clientId'])
|| empty($confEntry['auth_options']['clientSecret'])
|| empty($confEntry['auth_options']['urlAuthorize'])
|| empty($confEntry['auth_options']['urlAccessToken'])
|| empty($confEntry['auth_options']['urlResourceOwnerDetails'])
) {
$allGood = false;
$error[] = 'Provider No ' . ($id + 1) . ' : ' . _t('SSO_AUTH_OPTIONS_ERROR');
Expand All @@ -56,60 +53,60 @@ private function validateConfig()

if (!isset($confEntry['id_sso_field'])) {
$allGood = false;
$error[] = 'Provider No '. ($id + 1) . ' : ' . _t('SSO_USER_ID_REQUIRED');
$error[] = 'Provider No ' . ($id + 1) . ' : ' . _t('SSO_USER_ID_REQUIRED');
}

if (!isset($confEntry['email_sso_field'])) {
$allGood = false;
$error[] = 'Provider No '. ($id + 1) . ' : ' . _t('SSO_USER_EMAIL_REQUIRED');
$error[] = 'Provider No ' . ($id + 1) . ' : ' . _t('SSO_USER_EMAIL_REQUIRED');
}
}
if (!$allGood) {
throw new \RuntimeException(
_t('action {{login}}') . implode(',', $error),
);
throw new \RuntimeException(_t('action {{login}}') . implode(',', $error));
}
}

private function renderDefault(): string
{
$this->validateConfig();
// classe css pour les boutons
$btnclass = $this->wiki->GetParameter("btnclass");
$btnclass = $this->wiki->GetParameter('btnclass');
if (empty($btnclass)) {
$btnclass = 'btn-default';
}

$user = $this->authController->getLoggedUser();
$username = $user["name"] ?? '';
if($this->wiki->config['sso_config']['login_username_initials'] ?? false) {
$username = $user['name'] ?? '';
if ($this->wiki->config['sso_config']['login_username_initials'] ?? false) {
$username = $this->nameInitials($username);
}

return $this->render('@loginsso/modal.twig', [
"connected" => !empty($user),
"user" => $username,
"email" => $user["email"] ?? '',
"providers" => $this->wiki->config['sso_config']['providers'],
"incomingUrl" => $this->wiki->request->getUri(),
"btnClass" => $btnclass,
"nobtn" => $this->wiki->GetParameter("nobtn")
'connected' => !empty($user),
'user' => $username,
'email' => $user['email'] ?? '',
'providers' => $this->wiki->config['sso_config']['providers'],
'incomingUrl' => $this->wiki->request->getUri(),
'btnClass' => $btnclass,
'nobtn' => $this->wiki->GetParameter('nobtn'),
]);
}

private function nameInitials(string $name)
{
$nameExploded = explode(' ', $name);
if(count($nameExploded) === 1) {
if (count($nameExploded) === 1) {
$nameExploded = preg_split('/(?=[A-Z])/', $name);
}
if($nameExploded === false) {
if ($nameExploded === false) {
return $name;
}

$initials = '';
foreach ($nameExploded as $n) {
$initials .= mb_strtoupper($n[0]??'') . ' ';
$initials .= mb_strtoupper($n[0] ?? '') . ' ';
}

return trim($initials);
}

Expand Down Expand Up @@ -137,7 +134,7 @@ private function logout()

/**
* Get current url but remove all extension specific actions
* Used for post authentification redirection
* Used for post authentification redirection.
*/
private function getIncominUriWithoutAction()
{
Expand All @@ -147,5 +144,4 @@ private function getIncominUriWithoutAction()

return $this->wiki->request->getUriForPath($this->wiki->request->getPathInfo() . '?' . http_build_query($query));
}

}
18 changes: 10 additions & 8 deletions actions/linktouserprofil.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,24 @@
/**
* linktouserprofil : action which displays for a connected user a link to his profil entry
* The user have to be connected and the 'bazar_user_entry_id' declared in the config file
* If no 'bazar_user_entry_id' declared the action displays nothing
* If no 'bazar_user_entry_id' declared the action displays nothing.
*
* @param dash if dash is equal to '1', a dash point will be insered before the link
*
* @category YesWiki
* @package loginsso
*
* @author Adrien Cheype <[email protected]>
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL 3.0
* @link https://yeswiki.net
*
* @see https://yeswiki.net
*/

namespace YesWiki;

use function YesWiki\LoginSso\Lib\bazarUserEntryExists;


if (!defined("WIKINI_VERSION")) {
die("acc&egrave;s direct interdit");
if (!defined('WIKINI_VERSION')) {
exit('acc&egrave;s direct interdit');
}

// load the loginsso lib
Expand All @@ -27,11 +28,12 @@
$user = $this->GetUser();

// test if the user is connected and if the 'bazar_user_entry_id' config key is declared
if (!empty($user) && !empty($this->config['sso_config']) && isset($this->config['sso_config']['bazar_user_entry_id'])){
if (!empty($user) && !empty($this->config['sso_config']) && isset($this->config['sso_config']['bazar_user_entry_id'])) {
if (bazarUserEntryExists($this->config['sso_config']['bazar_user_entry_id'], $user['name'])) {
$content = '';
if ($this->GetParameter('dash') == '1')
if ($this->GetParameter('dash') == '1') {
$content .= ' - ';
}
$content .= '[[' . $user['name'] . ' ' . _t('SSO_SEE_USER_PROFIL') . ']]';
echo $this->Format($content);
}
Expand Down
19 changes: 11 additions & 8 deletions actions/userentries.php
Original file line number Diff line number Diff line change
@@ -1,22 +1,24 @@
<?php
/**
* userentries : action which displays all the entries created by a user (by default the connected user)
* userentries : action which displays all the entries created by a user (by default the connected user).
*
* @param username the name of the user whose we want to see the entries. Without this parameter, it will show the connected user's ones.
*
* @category YesWiki
* @package loginsso
*
* @author Adrien Cheype <[email protected]>
* @license https://www.gnu.org/licenses/agpl-3.0.en.html AGPL 3.0
* @link https://yeswiki.net
*
* @see https://yeswiki.net
*/

namespace YesWiki;

use YesWiki\Bazar\Controller\EntryController;
use YesWiki\Bazar\Service\EntryManager;
use YesWiki\Core\Service\TemplateEngine;

if (!defined("WIKINI_VERSION")) {
die("acc&egrave;s direct interdit");
if (!defined('WIKINI_VERSION')) {
exit('acc&egrave;s direct interdit');
}

// js lib
Expand All @@ -37,7 +39,7 @@
echo '<div class="alert alert-danger">' . _t('SSO_USER_NOT_FOUND') . $username . '.</div>' . "\n";
} else {
// we are looking for a custom template in the themes/tools/loginsso/templates directory
$GLOBALS['_BAZAR_']['templates'] = $this->GetParameter("template");
$GLOBALS['_BAZAR_']['templates'] = $this->GetParameter('template');
if (empty($GLOBALS['_BAZAR_']['templates'])) {
$GLOBALS['_BAZAR_']['templates'] = $GLOBALS['wiki']->config['default_bazar_template'];
}
Expand All @@ -46,8 +48,9 @@
// remove the user entry from the results if a bazar_user_entry_id is defined in the config
if (!empty($this->config['sso_config']['bazar_user_entry_id'])) {
foreach ($entries as $index => $fiche) {
if (intval($fiche["id_typeannonce"]) == $this->config['sso_config']['bazar_user_entry_id'])
if (intval($fiche['id_typeannonce']) == $this->config['sso_config']['bazar_user_entry_id']) {
unset($entries[$index]);
}
}
}
if (count($entries) > 0) {
Expand Down
Loading

0 comments on commit a5a6915

Please sign in to comment.