From 5e107d36ca20bf9cccb869f0ce76113010fcb998 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Thomas=20G=C3=BCnther?=
Date: Tue, 30 Jul 2024 23:06:59 +0200
Subject: [PATCH] Preparation fpr new mareike & solea module
---
includes/frontend-functions.php | 122 +-----------------
includes/roles.php | 80 ++++--------
.../class-extendregistrationform.php | 39 ++++++
.../Controllers/class-saveregistration.php | 76 +++++++++++
modules/calendar/calendar.php | 2 -
modules/calendar/classes/Calendar.class.php | 3 +
.../Controllers/class-main.php | 24 +++-
modules/security/classes/Security.class.php | 16 ++-
modules/security/includes/settings_writer.php | 7 -
modules/security/internal/site-health-tab.php | 14 --
10 files changed, 177 insertions(+), 206 deletions(-)
create mode 100644 modules/Registration/Controllers/class-extendregistrationform.php
create mode 100644 modules/Registration/Controllers/class-saveregistration.php
diff --git a/includes/frontend-functions.php b/includes/frontend-functions.php
index f20eadd..382427b 100644
--- a/includes/frontend-functions.php
+++ b/includes/frontend-functions.php
@@ -15,43 +15,6 @@ function bdp_update_dashboard_style() {
}
-function bdp_add_menu_security() {
- $moduleLoad = get_admin_url() . 'admin.php?page=' . BDP_LV_PLUGIN_SLUG . '/modules/index.php&loadmodule=';
-}
-
-function bdp_add_menu_contents() {
- add_menu_page('Seiten',
- 'Inhalte',
- 'edit_posts',
- 'edit.php?post_type=page',
- '',
- 'dashicons-format-aside',
- 4
- );
-
- add_submenu_page('edit.php?post_type=page',
- 'media',
- 'Medienverwaltung',
- 'edit_posts',
- 'upload.php'
- );
-
- add_submenu_page('edit.php?post_type=page',
- 'comments',
- 'Kommentare',
- 'edit_posts',
- 'edit-comments.php'
- );
-
- add_submenu_page('edit.php?post_type=page',
- 'Beiträge',
- 'Beiträge',
- 'edit_posts',
- 'edit.php'
- );
-
-}
-
function bdp_add_menu_mein_lv() {
$location = BDP_LV_PLUGIN_DIR . '/modules/';
$mainSlug = $location . 'index.php';
@@ -75,90 +38,7 @@ function bdp_add_menu_mein_lv() {
);
}
-function bdp_add_menu_setup() {
- add_menu_page(
- 'Benutzer',
- 'Benutzer-Verwaltung',
- 'manage_options',
- 'users.php',
- '',
- 'dashicons-admin-users',
- 6
- );
-
-
- add_menu_page(
- 'Allgemeine Einstellungen',
- 'Webseiten-Setup',
- 'manage_options',
- 'options-general.php',
- '',
- 'dashicons-admin-generic',
- 6
- );
-
- add_submenu_page('options-general.php',
- 'Design-Einstellungen',
- 'Template bearbeiten',
- 'manage_options',
- 'customize.php?return=/wp-admin/'
- );
-
- add_submenu_page('options-general.php',
- 'plugins',
- 'Erweiterungen',
- 'manage_options',
- 'plugins.php'
- );
-
-
- add_submenu_page('options-general.php',
- 'themes',
- 'Designs',
- 'manage_options',
- 'themes.php'
- );
-
-
- add_submenu_page('options-general.php',
- 'Sicherheit',
- 'Webseiten-Sicherheit',
- 'manage_options',
- 'site-health.php'
- );
-
-}
-
-function bdp_cleanup_menu()
-{
- global $submenu;
-
- remove_menu_page('edit-comments.php');
- remove_menu_page('edit.php');
- remove_menu_page('edit.php?post_type=page');
- remove_menu_page('upload.php');
- remove_menu_page('themes.php');
- remove_menu_page('plugins.php');
- remove_menu_page('options-general.php');
- remove_menu_page('users.php');
- remove_menu_page('tools.php');
-
- bdp_add_menu_contents();
- bdp_add_menu_setup();
- bdp_add_menu_security();
-
-
- remove_submenu_page('edit.php?post_type=page','post-new.php?post_type=page');
- remove_submenu_page('users.php','user-new.php');
- remove_submenu_page('users.php','profile.php');
-
- remove_submenu_page('edit.php','post-new.php');
- remove_submenu_page('edit.php','edit-tags.php?taxonomy=category');
- remove_submenu_page('edit.php','edit-tags.php?taxonomy=post_tag');
-}
-
function bdp_create_menu_structure()
-{
- add_action('admin_menu', 'bdp_cleanup_menu');
+{;
bdp_add_menu_mein_lv();
}
diff --git a/includes/roles.php b/includes/roles.php
index ed69d1d..abcb71b 100644
--- a/includes/roles.php
+++ b/includes/roles.php
@@ -5,64 +5,40 @@
remove_role( 'contributor' ); // Hier 'custom_role_slug' durch den tatsächlichen Slug der zu löschenden Rolle ersetzen
remove_role( 'author' ); // Hier 'custom_role_slug' durch den tatsächlichen Slug der zu löschenden Rolle ersetzen
remove_role( 'editor' ); // Hier 'custom_role_slug' durch den tatsächlichen Slug der zu löschenden Rolle ersetzen
- $capabilities = array(
- 'read' => true, // Die Rolle kann Beiträge lesen
- 'edit_posts' => true, // Die Rolle kann Beiträge bearbeiten
- 'delete_posts' => true, // Die Rolle kann Beiträge löschen
- 'publish_posts' => true, // Die Rolle kann Beiträge veröffentlichen
- // Weitere Berechtigungen können nach Bedarf hinzugefügt werden
- );
- // Rolle hinzufügen
- add_role( 'stafue', 'Stammesführung', kompass_get_capa_stafue() );
- add_role( 'grufue', 'Gruppenführung', kompass_get_capa_grufue() );
- add_role( 'aktionsleitung', 'Aktionsleitung', kompass_get_capa_aktionsleitung() );
+ $role = get_role( 'director' );
+ if ( null === $role ) {
+ add_role(
+ 'director',
+ true === get_option( 'solea_used_for_state', false )
+ ? __( 'State director', 'mareike' )
+ : __( 'Club director', 'mareike' ),
+ kompass_get_capa_editor()
+ );
+ } else {
+ $role = get_role( 'director' );
+ foreach ( kompass_get_capa_editor() as $capability => $value ) {
+ $role->add_cap( $capability );
+ }
+ }
+
add_role( 'author', 'Redakteur', kompass_get_capa_editor() );
- $role = get_role( 'administrator' );
- foreach (kompass_get_capa_stafue() as $capability => $value) {
- $role->add_cap( $capability );
+ $role = get_role( 'user' );
+ if ( null === $role ) {
+ add_role(
+ 'user',
+ 'Standardnutzer',
+ array('read' => true)
+ );
+ } else {
+ foreach ( solea_get_capabilities_user() as $capability => $value ) {
+ $role->add_cap( 'read' );
+ }
}
+
}
-function kompass_get_capa_stafue() : array
-{
- return array_merge(
- [
- 'create_groups' => true,
- 'delete_groups' => true,
- 'edit_groups' => true,
- 'delete_teilis' => true,
- 'move_teilis' => true,
- 'create_events' => true,
- ], kompass_get_capa_aktionsleitung(), kompass_get_capa_grufue(), kompass_get_capa_editor());
-}
-
-
-
-function kompass_get_capa_aktionsleitung() : array
-{
- return [
- 'show_bdp' => true,
- 'create_event_teilis' => true,
- 'edit_event_teilis' => true,
- 'delete_event_teilis' => true,
- 'send_event_mails' => true,
- ];
-}
-
- function kompass_get_capa_grufue() : array
- {
- return [
- 'show_bdp' => true,
- 'show_groups' => true,
- 'create_teilis' => true,
- 'edit_teilis' => true,
- 'send_mails' => true
- ];
- }
-
-
function kompass_get_capa_editor() : array
{
return [
diff --git a/modules/Registration/Controllers/class-extendregistrationform.php b/modules/Registration/Controllers/class-extendregistrationform.php
new file mode 100644
index 0000000..7315138
--- /dev/null
+++ b/modules/Registration/Controllers/class-extendregistrationform.php
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+ add('first_name_error', 'FEHLER: Der Vorname ist erforderlich.');
+ }
+ if (empty($_POST['last_name']) || !empty($_POST['last_name']) && trim($_POST['last_name']) == '') {
+ $errors->add('last_name_error', 'FEHLER: DEr Nachname ist erforderlich.');
+ }
+ return $errors;
+
+
+ }
+}
\ No newline at end of file
diff --git a/modules/Registration/Controllers/class-saveregistration.php b/modules/Registration/Controllers/class-saveregistration.php
new file mode 100644
index 0000000..de0c537
--- /dev/null
+++ b/modules/Registration/Controllers/class-saveregistration.php
@@ -0,0 +1,76 @@
+set_role('standarduser');
+
+ // Send confirmation email
+ $user = get_userdata($user_id);
+ $code = sha1($user->user_registered);
+ update_user_meta($user_id, 'activation_code', $code);
+
+ $activation_link = add_query_arg(array('key' => $code, 'user' => $user_id), get_site_url() . '/wp-login.php');
+
+ wp_mail($user->user_email, 'Bitte bestätige deine Anmeldung', 'Hallo, bitte bestätige deine Anmeldung über den folgenden Link: ' . $activation_link);
+
+ // Notify admin
+ wp_mail(get_option('admin_email'), 'New User Registration', 'A new user has registered: ' . $user->user_login . PHP_EOL . 'First name:' . $user->first_name . PHP_EOL . 'Last name:' . $user->last_name );
+ }
+
+ public static function activate_user() {
+ if (isset($_GET['key']) && isset($_GET['user'])) {
+ $user_id = intval($_GET['user']);
+ $activation_code = get_user_meta($user_id, 'activation_code', true);
+
+ if ($activation_code === $_GET['key']) {
+ delete_user_meta($user_id, 'activation_code');
+ wp_redirect(home_url('/wp-login.php?checkemail=registered'));
+ exit;
+ }
+ }
+ }
+
+ public static function check_user_activation($user, $username, $password) {
+ if (!is_a($user, 'WP_User')) {
+ return null;
+ }
+ $user_id = $user->ID;
+ $activation_code = get_user_meta($user_id, 'activation_code', true);
+
+ if ($activation_code) {
+ return new WP_Error('not_activated', __('ERROR: You need to activate your account. Please check your email.', 'kompass'));
+ }
+
+ return $user;
+ }
+
+ public static function display_custom_message() {
+ if (isset($_GET['checkemail']) && $_GET['checkemail'] === 'registered') {
+ echo '
+
Vielen Dank für deine Registrierung. Bitte überprüfen deine E-Mails, um deine Registrierung zu bestätigen.
+
';
+ }
+ }
+}
\ No newline at end of file
diff --git a/modules/calendar/calendar.php b/modules/calendar/calendar.php
index 07e6e37..1bf5c52 100644
--- a/modules/calendar/calendar.php
+++ b/modules/calendar/calendar.php
@@ -1,6 +1,4 @@
prefix . $table;
+ $sql = "SHOW TABLES LIKE '$sqlTable'";
+
+ $result = $wpdb->get_var( $sql );
+ if ( $result == $sqlTable ) {
+ $show_menu = true;
+ }
+ }
+
+ if (!$show_menu) {
+ return;
+ }
+
+ add_menu_page(
+ __('Events (legacy)', BDP_LV_PLUGIN_SLUG),
+ __('Events (legacy)', BDP_LV_PLUGIN_SLUG),
'send_mails',
'kompass-events',
[$this, 'router'],
diff --git a/modules/security/classes/Security.class.php b/modules/security/classes/Security.class.php
index a44806f..f86d810 100644
--- a/modules/security/classes/Security.class.php
+++ b/modules/security/classes/Security.class.php
@@ -28,8 +28,7 @@ class Security
$loginUrl = get_option('whl_page', null) ?? 'bdp-login';
}
- enable_option_rewrite_url($loginUrl);
- enable_option_disable_xmlrpc();
+ enable_option_disable_xmlrpc();
enable_option_block_authorscan();
enable_option_block_execution_in_uploads();
enable_option_prohibit_special_files();
@@ -83,12 +82,17 @@ class Security
public static function SetPageFilters() {
global $wp;
- if (str_contains($_SERVER['REQUEST_URI'], 'wp-login.php?action=logout')) {
- return;
+ add_action('template_redirect', [Security::class, 'protectAuthorScan']);
+
+ if (null !== is_login_rewritten()) {
+ if (str_contains($_SERVER['REQUEST_URI'], 'wp-login.php?action=logout')) {
+ return;
}
- add_action('template_redirect', [Security::class, 'protectAuthorScan']);
- Security::protectLoginSecurity();
+ Security::protectLoginSecurity();
+ }
+
+
}
public static function protectLoginSecurity() {
diff --git a/modules/security/includes/settings_writer.php b/modules/security/includes/settings_writer.php
index 6012da5..e06490f 100644
--- a/modules/security/includes/settings_writer.php
+++ b/modules/security/includes/settings_writer.php
@@ -86,12 +86,6 @@ function disable_option_disable_wp_debug() {
WpConfigEditor::updateConfig('WP_DEBUG', 'true');
}
-function enable_option_rewrite_url(?string $url = null) {
- global $_POST;
- $saveUrl = $url ?? $_POST['rewrite_login'];
- update_option('kompass_sec_rewrite_login', $saveUrl);
-}
-
function disable_option_rewrite_url() {
update_option('kompass_sec_rewrite_login', null);
}
@@ -110,7 +104,6 @@ function kompass_sec_save_settings($settings) {
'option_prohibit_bot_access',
'option_block_directory_listing',
'option_disable_wp_debug',
- 'option_rewrite_url',
];
$enableSettings = array_intersect($allPossibleSettings, $settings);
diff --git a/modules/security/internal/site-health-tab.php b/modules/security/internal/site-health-tab.php
index b7b3014..d9b2351 100644
--- a/modules/security/internal/site-health-tab.php
+++ b/modules/security/internal/site-health-tab.php
@@ -98,20 +98,6 @@
-
- type="checkbox" id="sec_mod_11" name="security_settings[]" value="option_rewrite_url" />
-
-
-
-