Skip to content

Cfm 29 transmogrify plugin #347

Open
wants to merge 46 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
1350ab7
Transmogrify plugin
Ioannis Oct 3, 2025
6396ac9
Fixes
Ioannis Oct 3, 2025
d481532
Improvements.Fixed org identities transmogrify.
Ioannis Oct 10, 2025
5608161
OrgIdentities eligibility to transmogrify
Ioannis Oct 11, 2025
66719a8
Update Readme.md
Ioannis Oct 11, 2025
f51d803
Fix groups transmogrify according to AR-G-9
Ioannis Oct 12, 2025
dc1476c
fix group members insert throwing exception
Ioannis Oct 14, 2025
0d2ee2e
MVEA for person and orgidentity.
Ioannis Oct 14, 2025
6418c22
Fix mveas
Ioannis Oct 14, 2025
430dc77
Job history records+servers
Ioannis Oct 16, 2025
847c09c
Servers transmogrify
Ioannis Oct 16, 2025
88694d7
Fix command line printer and verbosity
Ioannis Oct 17, 2025
29649c8
Fix verbosity print
Ioannis Oct 17, 2025
31689f5
cleaning
Ioannis Oct 18, 2025
49fa536
Put warn counting in cache.Load the plugin in the Application.php.
Ioannis Oct 21, 2025
5b83073
message templates
Ioannis Nov 11, 2025
851b668
Notifications table
Ioannis Nov 11, 2025
b49ab25
transmogrify petitions
Ioannis Nov 12, 2025
b94df63
Add support to skip certain tables during transmogrification
Ioannis Nov 15, 2025
2e77df9
petition status mapper
Ioannis Nov 16, 2025
f4fc5f3
Fix login identifier mapping issues.Added enrollment flow transmogrif…
Ioannis Nov 18, 2025
4ef3083
Historic Petition Viewer initial commit
Ioannis Nov 18, 2025
6b4c265
Sync historic metadata to the plugin's tables
Ioannis Nov 18, 2025
b8948a7
HistoricPetitionViewer and Transmogrification adjucstments
Ioannis Nov 19, 2025
9acbdbc
Add HistoricPetitionViewer cakephp load dependency
Ioannis Nov 19, 2025
98f0c2a
Fix person status mapping
Ioannis Nov 20, 2025
c80e857
Pipelines. Login identifier importing fix/improve. Person status mapper.
Ioannis Nov 20, 2025
878746f
OrgIdentitySources to ExternalIdentitySources
Ioannis Nov 22, 2025
6fd354b
External Identity Source Records
Ioannis Nov 24, 2025
4f4237b
orcid sources
Ioannis Nov 25, 2025
a665629
EnvSources transmogrification. Improve MVA mappers.
Ioannis Nov 26, 2025
bbc7f45
ApiSources
Ioannis Nov 27, 2025
94b42a1
SqlSource,FileSource. Mapper and cache engine improvements.
Ioannis Nov 28, 2025
dbe1899
Authenticators wrappers
Ioannis Nov 29, 2025
43d5531
SshKeyAuthenticators
Ioannis Nov 30, 2025
3ebc465
PasswordAuthenticator
Ioannis Nov 30, 2025
a014a0d
Fix external identity sources status/sync_mode transmogrification
Ioannis Dec 19, 2025
ac412d9
add autoload requirements
Ioannis Dec 19, 2025
ede667b
Comment out pause statement
Ioannis Dec 19, 2025
4b0f586
Remove obsolete code. Database command will sync the transmogrificati…
Ioannis Jan 15, 2026
a7d8d82
Add population_hide/CoSettings column
Ioannis Jan 15, 2026
067700c
Moved services from core to plugin
Ioannis Feb 1, 2026
7df4136
Styling for Historic Petition attributes (CFM-29)
arlen Jan 13, 2026
d3de1ea
Fix autoload-static conflict
Ioannis Feb 3, 2026
261878d
Transmogrify IdentifierAssignments
Ioannis Feb 18, 2026
54fba95
Improve transmogrification process of selected tables
Ioannis Feb 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 12 additions & 1 deletion app/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@
"SqlConnector\\": "availableplugins/SqlConnector/src/",
"SshKeyAuthenticator\\": "plugins/SshKeyAuthenticator/src/",
"CoreJob\\": "plugins/CoreJob/src/",
"TermsAgreer\\": "plugins/TermsAgreer/src/"
"TermsAgreer\\": "plugins/TermsAgreer/src/",
"Transmogrify\\": "plugins/Transmogrify/src/",
"HistoricPetitionViewer\\": "plugins/HistoricPetitionViewer/src/"
}
},
"autoload-dev": {
Expand All @@ -70,7 +72,16 @@
"SqlConnector\\Test\\": "availableplugins/SqlConnector/tests/",
"SshKeyAuthenticator\\Test\\": "plugins/SshKeyAuthenticator/tests/",
"CoreJob\\Test\\": "plugins/CoreJob/tests/",
<<<<<<< HEAD
<<<<<<< HEAD
"TermsAgreer\\Test\\": "plugins/TermsAgreer/tests/"
=======
"Transmogrify\\": "plugins/Transmogrify/src/"
>>>>>>> 8a653bfc (Transmogrify plugin)
=======
"Transmogrify\\": "plugins/Transmogrify/src/",
"HistoricPetitionViewer\\": "plugins/HistoricPetitionViewer/src/"
>>>>>>> 90386017 (Historic Petition Viewer initial commit)
}
},
"scripts": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -341,13 +341,12 @@ protected function selectSequences(
* Perform parameter substitution on an identifier format to generate the base
* string used in identifier assignment.
*
* @since COmanage Registry v5.0.0
* @param EntityInterface $entity Entity to assign Identifier for
* @param string $format Identifier assignment format
* @param PermittedCharactersEnum $permitted Acceptable characters for substituted parameters
* @param boolean $transliterate Whether to apply transliteration in constructing the identifier base
* @param EntityInterface $entity Entity to assign Identifier for
* @param string $format Identifier assignment format
* @param string $permitted Acceptable characters for substituted parameters
* @param boolean $transliterate Whether to apply transliteration in constructing the identifier base
* @return string Identifier with paramaters substituted
* @throws RuntimeException
* @since COmanage Registry v5.0.0
*/

protected function substituteParameters(
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
<?php
declare(strict_types=1);

namespace HistoricPetitionViewer;

use Cake\Console\CommandCollection;
use Cake\Core\BasePlugin;
use Cake\Core\ContainerInterface;
use Cake\Core\PluginApplicationInterface;
use Cake\Http\MiddlewareQueue;
use Cake\Routing\RouteBuilder;

/**
* Plugin for CoreEnroller
*/
class HistoricPetitionViewerPlugin extends BasePlugin
{
/**
* Load all the plugin configuration and bootstrap logic.
*
* The host application is provided as an argument. This allows you to load
* additional plugin dependencies, or attach events.
*
* @param \Cake\Core\PluginApplicationInterface $app The host application
* @return void
*/
public function bootstrap(PluginApplicationInterface $app): void
{
}

/**
* Add routes for the plugin.
*
* If your plugin has many routes and you would like to isolate them into a separate file,
* you can create `$plugin/config/routes.php` and delete this method.
*
* @param \Cake\Routing\RouteBuilder $routes The route builder to update.
* @return void
*/
public function routes(RouteBuilder $routes): void
{
$routes->plugin(
'HistoricPetitionViewer',
['path' => '/historic-petition-viewer'],
function (RouteBuilder $builder) {
// Your snippet goes here, using $builder instead of $routes
$builder->setRouteClass(DashedRoute::class);

// Add your plugin routes here if needed, then:
$builder->fallbacks(DashedRoute::class);
}
);
parent::routes($routes);
}

/**
* Add middleware for the plugin.
*
* @param \Cake\Http\MiddlewareQueue $middlewareQueue The middleware queue to update.
* @return \Cake\Http\MiddlewareQueue
*/
public function middleware(MiddlewareQueue $middlewareQueue): MiddlewareQueue
{
// Add your middlewares here

return $middlewareQueue;
}

/**
* Add commands for the plugin.
*
* @param \Cake\Console\CommandCollection $commands The command collection to update.
* @return \Cake\Console\CommandCollection
*/
public function console(CommandCollection $commands): CommandCollection
{
// Add your commands here

$commands = parent::console($commands);

return $commands;
}

/**
* Register application container services.
*
* @param \Cake\Core\ContainerInterface $container The Container to update.
* @return void
* @link https://book.cakephp.org/4/en/development/dependency-injection.html#dependency-injection
*/
public function services(ContainerInterface $container): void
{
// Add your services here
}
}
87 changes: 87 additions & 0 deletions app/plugins/HistoricPetitionViewer/config/plugin.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
{
"name": "Historic Petition Viewer",
"version": "1.0.0",
"description": "",
"types": {},
"schema": {
"tables": {
"petition_hist_attrs": {
"comment": "Transmogrified from cm_co_petition_attributes",
"columns": {
"id": { "type": "integer", "autoincrement": true, "primarykey": true },
"petition_id": { "type": "integer", "foreignkey": { "table": "petitions", "column": "id" } },
"historic_petition_viewer_id": {
"type": "integer",
"foreignkey": { "table": "historic_petition_viewers", "column": "id" },
"notnull": false
},

"attribute": { "type": "string", "size": 128 },
"value": { "type": "text" },
"created": { "type": "datetime" },
"modified": { "type": "datetime" },
"petition_hist_attr_id": { "type": "integer", "foreignkey": { "table": "petition_hist_attrs", "column": "id" } },
"revision": { "type": "integer" },
"deleted": { "type": "boolean" },
"actor_identifier": { "type": "string", "size": 256 }
},
"indexes": {
"petition_hist_attrs_i1": { "columns": [ "petition_id" ] },
"petition_hist_attrs_i2": { "columns": [ "attribute" ] },
"petition_hist_attrs_i3": { "columns": [ "petition_hist_attr_id" ] }
},
"timestamps": false,
"changelog": false
},
"petition_meta_hist_recs": {
"comment": "Transmogrified from cm_co_petitions fields that no longer map to petitions",
"columns": {
"id": { "type": "integer", "autoincrement": true, "primarykey": true },
"petition_id": { "type": "integer", "foreignkey": { "table": "petitions", "column": "id" } },
"enrollment_flow_id": { "type": "integer", "foreignkey": { "table": "enrollment_flows", "column": "id" }},
"historic_petition_viewer_id": {
"type": "integer",
"foreignkey": { "table": "historic_petition_viewers", "column": "id" },
"notnull": false
},

"enrollee_org_identity_id": { "type": "integer" },
"archived_org_identity_id": { "type": "integer" },
"enrollee_person_role_id": { "type": "integer" },
"sponsor_person_id": { "type": "integer" },
"approver_person_id": { "type": "integer" },
"co_invite_id": { "type": "integer" },
"vetting_request_id": { "type": "integer" },

"enrollee_token": { "type": "string", "size": 48 },
"petitioner_token": { "type": "string", "size": 48 },
"return_url": { "type": "string", "size": 512 },
"approver_comment": { "type": "string", "size": 256 },

"created": { "type": "datetime" },
"modified": { "type": "datetime" },
"petition_meta_hist_rec_id": { "type": "integer", "foreignkey": { "table": "petition_meta_hist_recs", "column": "id" } },
"revision": { "type": "integer" },
"deleted": { "type": "boolean" },
"actor_identifier": { "type": "string", "size": 256 }
},
"indexes": {
"petition_meta_hist_recs_i1": { "columns": [ "petition_id" ] },
"petition_meta_hist_recs_i2": { "columns": [ "petition_meta_hist_rec_id" ] }
},
"timestamps": false,
"changelog": false
},
"historic_petition_viewers": {
"comment": "Enrollment Flow Step for historic petition data",
"columns": {
"id": { "type": "integer", "autoincrement": true, "primarykey": true },
"enrollment_flow_step_id": { "type": "integer", "foreignkey": { "table": "enrollment_flow_steps", "column": "id" } }
},
"indexes": {
"historic_petition_step_links_i1": { "columns": [ "enrollment_flow_step_id" ] }
}
}
}
}
}
39 changes: 39 additions & 0 deletions app/plugins/HistoricPetitionViewer/config/routes.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

/**
* Historic Petition Viewer plugin specific routes.
*
* Portions licensed to the University Corporation for Advanced Internet
* Development, Inc. ("UCAID") under one or more contributor license agreements.
* See the NOTICE file distributed with this work for additional information
* regarding copyright ownership.
*
* UCAID licenses this file to you under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @link https://www.internet2.edu/comanage COmanage Project
* @package registry-plugins
* @since COmanage Registry v5.2.0
* @license Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
*/

declare(strict_types=1);

use Cake\Routing\Route\DashedRoute;

$routes->plugin(
'HistoricPetitionViewer',
['path' => '/historic-petition-viewer/'],
function ($routes) {
$routes->setRouteClass(DashedRoute::class);
}
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# COmanage Registry Localizations (historic_petition_viewer domain)
#
# Portions licensed to the University Corporation for Advanced Internet
# Development, Inc. ("UCAID") under one or more contributor license agreements.
# See the NOTICE file distributed with this work for additional information
# regarding copyright ownership.
#
# UCAID licenses this file to you under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with the
# License. You may obtain a copy of the License at:
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# @link https://www.internet2.edu/comanage COmanage Project
# @package registry-plugins
# @since COmanage Registry v5.2.0
# @license Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)


msgid "attributes"
msgstr "Attributes"

msgid "attributes.none"
msgstr "No historic attributes recorded for this petition."

msgid "historic.petition"
msgstr "Historic Petition #{0}"

msgid "metadata"
msgstr "Metadata"

msgid "metadata.none"
msgstr "No historic metadata recorded for this petition."
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php
declare(strict_types=1);

namespace HistoricPetitionViewer\Controller;

use App\Controller\AppController as BaseController;

class AppController extends BaseController
{
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<?php
/**
* COmanage Registry Historic Petition Viewers Controller
*
* Portions licensed to the University Corporation for Advanced Internet
* Development, Inc. ("UCAID") under one or more contributor license agreements.
* See the NOTICE file distributed with this work for additional information
* regarding copyright ownership.
*
* UCAID licenses this file to you under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with the
* License. You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
* @link https://www.internet2.edu/comanage COmanage Project
* @package registry-plugins
* @since COmanage Registry v5.2.0
* @license Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0)
*/

declare(strict_types=1);

namespace HistoricPetitionViewer\Controller;

use App\Controller\StandardPluginController;

class HistoricPetitionViewersController extends StandardPluginController {
protected array $paginate = [
'order' => [
'HistoricPetitionViewers.id' => 'asc'
]
];
}
Loading