From 06f8eadf1992874ef29a452546625fc562a213b2 Mon Sep 17 00:00:00 2001 From: Dan Chadwick Date: Sun, 18 Aug 2024 20:19:14 -0400 Subject: [PATCH] Adding open id auth and gin login. --- composer.json | 1 + composer.lock | 61 +- config/default/core.extension.yml | 3 + config/default/gin_login.settings.yml | 6 + .../default/openid_connect.client.google.yml | 11 + config/default/openid_connect.settings.yml | 12 + config/default/user.settings.yml | 2 +- config/default/views.view.authmap.yml | 578 ++++++++++++++++++ 8 files changed, 672 insertions(+), 2 deletions(-) create mode 100644 config/default/gin_login.settings.yml create mode 100644 config/default/openid_connect.client.google.yml create mode 100644 config/default/openid_connect.settings.yml create mode 100644 config/default/views.view.authmap.yml diff --git a/composer.json b/composer.json index 2918628..6ea6ca7 100644 --- a/composer.json +++ b/composer.json @@ -26,6 +26,7 @@ "drupal/devel_entity_updates": "^4.1", "drupal/field_group": "^3.4", "drupal/gin": "^3.0@RC", + "drupal/gin_login": "^2.1", "drupal/google_tag": "^2.0", "drupal/jsonapi_permission_access": "1.0.1", "drupal/layout_builder_styles": "^2.0", diff --git a/composer.lock b/composer.lock index 23dcbca..41a80ef 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "52fa35692c8d7d783cdaf9704289d9a4", + "content-hash": "b4ad2bd086bae7631f8cd18f2b6582df", "packages": [ { "name": "asm89/stack-cors", @@ -2421,6 +2421,65 @@ } ] }, + { + "name": "drupal/gin_login", + "version": "2.1.3", + "source": { + "type": "git", + "url": "https://git.drupalcode.org/project/gin_login.git", + "reference": "2.1.3" + }, + "dist": { + "type": "zip", + "url": "https://ftp.drupal.org/files/projects/gin_login-2.1.3.zip", + "reference": "2.1.3", + "shasum": "4fd1a4f36205f511ab7c222f3543aa15ad2331c6" + }, + "require": { + "drupal/core": "^9 || ^10 || ^11" + }, + "type": "drupal-module", + "extra": { + "drupal": { + "version": "2.1.3", + "datestamp": "1719750649", + "security-coverage": { + "status": "covered", + "message": "Covered by Drupal's security advisory policy" + } + } + }, + "notification-url": "https://packages.drupal.org/8/downloads", + "license": [ + "GPL-2.0+" + ], + "authors": [ + { + "name": "Sascha Eggenberger (saschaeggi)", + "homepage": "https://www.drupal.org/u/saschaeggi", + "role": "Maintainer" + } + ], + "description": "Custom Drupal Login for Gin theme", + "homepage": "https://www.drupal.org/project/gin_login", + "keywords": [ + "Drupal" + ], + "support": { + "source": "http://cgit.drupalcode.org/gin_login", + "issues": "https://www.drupal.org/project/issues/gin_login" + }, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/saschaeggi" + }, + { + "type": "other", + "url": "https://paypal.me/saschaeggi" + } + ] + }, { "name": "drupal/gin_toolbar", "version": "1.0.0-rc6", diff --git a/config/default/core.extension.yml b/config/default/core.extension.yml index 4ed194c..b45ae54 100644 --- a/config/default/core.extension.yml +++ b/config/default/core.extension.yml @@ -19,6 +19,7 @@ module: field_ui: 0 file: 0 filter: 0 + gin_login: 0 gin_toolbar: 0 google_tag: 0 help: 0 @@ -34,6 +35,7 @@ module: menu_ui: 0 mysql: 0 node: 0 + openid_connect: 0 options: 0 path: 0 path_alias: 0 @@ -52,6 +54,7 @@ module: user: 0 views_ui: 0 pathauto: 1 + externalauth: 10 views: 10 minimal: 1000 theme: diff --git a/config/default/gin_login.settings.yml b/config/default/gin_login.settings.yml new file mode 100644 index 0000000..7c45242 --- /dev/null +++ b/config/default/gin_login.settings.yml @@ -0,0 +1,6 @@ +_core: + default_config_hash: OhypfKr4_Eo8XwXg3Sios05lN-LjxOhSdSOSkEN9Ndo +logo: + use_default: true +brand_image: + use_default: true diff --git a/config/default/openid_connect.client.google.yml b/config/default/openid_connect.client.google.yml new file mode 100644 index 0000000..b23c41d --- /dev/null +++ b/config/default/openid_connect.client.google.yml @@ -0,0 +1,11 @@ +uuid: bc62b56f-b228-444f-b6ad-f7d496dbe379 +langcode: en +status: true +dependencies: { } +id: google +label: Google +plugin: google +settings: + client_id: 127355938-0kuc1vjgd77s7a0vtv4dcrjrt6u5jod4.apps.googleusercontent.com + client_secret: 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 + iss_allowed_domains: "dchadwick.ddev.site\r\ndanchadwickdesign.com" diff --git a/config/default/openid_connect.settings.yml b/config/default/openid_connect.settings.yml new file mode 100644 index 0000000..5e917f8 --- /dev/null +++ b/config/default/openid_connect.settings.yml @@ -0,0 +1,12 @@ +_core: + default_config_hash: NFnOZU6VCOfURCAR4-O3V7eMHTx2LNqnCmDKRSNjjns +always_save_userinfo: true +connect_existing_users: false +override_registration_settings: false +end_session_enabled: true +user_login_display: replace +redirect_login: user +redirect_logout: '' +userinfo_mappings: + timezone: zoneinfo +role_mappings: { } diff --git a/config/default/user.settings.yml b/config/default/user.settings.yml index 755dd04..8f55269 100644 --- a/config/default/user.settings.yml +++ b/config/default/user.settings.yml @@ -12,7 +12,7 @@ notify: register_admin_created: true register_no_approval_required: true register_pending_approval: true -register: admin_only +register: visitors_admin_approval cancel_method: user_cancel_block password_reset_timeout: 86400 password_strength: true diff --git a/config/default/views.view.authmap.yml b/config/default/views.view.authmap.yml new file mode 100644 index 0000000..ce45962 --- /dev/null +++ b/config/default/views.view.authmap.yml @@ -0,0 +1,578 @@ +uuid: ed342b4a-70b6-4d33-ad5c-604d46a7da21 +langcode: en +status: true +dependencies: + module: + - externalauth + - user +_core: + default_config_hash: U64nXi8iCv0yQmnmpzCJwdUQLNJfbY6XZX_0To4nzrg +id: authmap +label: 'External authentication links' +module: externalauth +description: 'Provides overview of external authentication links.' +tag: default +base_table: authmap +base_field: uid +display: + default: + display_plugin: default + id: default + display_title: Master + position: 0 + display_options: + access: + type: perm + options: + perm: 'view authmap' + cache: + type: none + options: { } + query: + type: views_query + options: + disable_sql_rewrite: false + distinct: false + replica: false + query_comment: '' + query_tags: { } + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + pager: + type: mini + options: + items_per_page: 50 + offset: 0 + id: 0 + total_pages: null + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + tags: + previous: ‹‹ + next: ›› + pagination_heading_level: h4 + style: + type: table + options: + grouping: { } + row_class: '' + default_row_class: true + override: true + sticky: false + caption: '' + summary: '' + description: '' + columns: + authname: authname + uid: uid + name: name + delete: delete + info: + authname: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + uid: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + name: + sortable: true + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + delete: + sortable: false + default_sort_order: asc + align: '' + separator: '' + empty_column: false + responsive: '' + default: authname + empty_table: false + row: + type: fields + fields: + provider_field: + id: provider_field + table: authmap + field: provider_field + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: true + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + plugin_id: standard + authname: + id: authname + table: authmap + field: authname + relationship: none + group_type: group + admin_label: '' + label: 'Authentication Name' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + plugin_id: standard + uid: + id: uid + table: authmap + field: uid + relationship: none + group_type: group + admin_label: '' + label: 'Drupal User ID' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + set_precision: false + precision: 0 + decimal: . + separator: '' + format_plural: false + format_plural_string: !!binary MQNAY291bnQ= + prefix: '' + suffix: '' + plugin_id: numeric + name: + id: name + table: users_field_data + field: name + relationship: uid + group_type: group + admin_label: '' + label: 'Drupal User Name' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: value + type: user_name + settings: + link_to_entity: true + group_column: value + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: user + entity_field: name + plugin_id: field + delete_link: + id: delete_link + table: authmap + field: delete_link + relationship: none + group_type: group + admin_label: '' + label: delete + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: true + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + text: delete + output_url_as_text: false + absolute: false + plugin_id: authmap_link_delete + filters: + authname: + id: authname + table: authmap + field: authname + relationship: none + group_type: group + admin_label: '' + operator: starts + value: '' + group: 1 + exposed: true + expose: + operator_id: authname_op + label: 'Authentication name' + description: '' + use_operator: false + operator: authname_op + operator_limit_selection: false + operator_list: { } + identifier: authname + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + administrator: '0' + role3: '0' + role4: '0' + placeholder: '' + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + plugin_id: string + uid: + id: uid + table: users_field_data + field: uid + relationship: uid + group_type: group + admin_label: '' + operator: in + value: { } + group: 1 + exposed: true + expose: + operator_id: uid_op + label: 'Drupal user' + description: '' + use_operator: false + operator: uid_op + operator_limit_selection: false + operator_list: { } + identifier: uid + required: false + remember: false + multiple: false + remember_roles: + authenticated: authenticated + anonymous: '0' + administrator: '0' + role3: '0' + role4: '0' + reduce: false + is_grouped: false + group_info: + label: '' + description: '' + identifier: '' + optional: true + widget: select + multiple: false + remember: false + default_group: All + default_group_multiple: { } + group_items: { } + entity_type: user + entity_field: uid + plugin_id: user_name + sorts: { } + title: 'External authentication links' + header: { } + footer: { } + empty: + area_text_custom: + id: area_text_custom + table: views + field: area_text_custom + relationship: none + group_type: group + admin_label: '' + empty: true + tokenize: false + content: 'No links (from Authentication name to Drupal user) found.' + plugin_id: text_custom + relationships: + uid: + id: uid + table: authmap + field: uid + relationship: none + group_type: group + admin_label: 'Linked Drupal user' + required: false + plugin_id: standard + arguments: + provider_field: + id: provider_field + table: authmap + field: provider_field + relationship: none + group_type: group + admin_label: '' + default_action: ignore + exception: + value: all + title_enable: false + title: All + title_enable: true + title: 'Links for {{ arguments.provider_field }}' + default_argument_type: fixed + default_argument_options: + argument: '' + summary_options: + base_path: '' + items_per_page: 25 + count: false + override: false + summary: + sort_order: asc + number_of_records: 0 + format: default_summary + specify_validation: false + validate: + type: none + fail: 'not found' + validate_options: { } + glossary: false + limit: 0 + case: none + path_case: none + transform_dash: false + break_phrase: false + plugin_id: string + display_extenders: { } + show_admin_links: false + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_interface' + - url + - url.query_args + - user.permissions + tags: { } + page: + display_plugin: page + id: page + display_title: Page + position: 1 + display_options: + display_extenders: { } + path: admin/people/authmap + menu: + type: tab + title: External + description: '' + expanded: false + parent: entity.user.collection + weight: 20 + context: '0' + menu_name: admin + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_interface' + - url + - url.query_args + - user.permissions + tags: { }