Skip to content

Cfm 29 transmogrify plugin #347

Open
wants to merge 49 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
13cf79c
Transmogrify plugin
Ioannis Oct 3, 2025
7257827
Fixes
Ioannis Oct 3, 2025
697690f
Improvements.Fixed org identities transmogrify.
Ioannis Oct 10, 2025
4733e67
OrgIdentities eligibility to transmogrify
Ioannis Oct 11, 2025
7be50d6
Update Readme.md
Ioannis Oct 11, 2025
3afe2a7
Fix groups transmogrify according to AR-G-9
Ioannis Oct 12, 2025
b745642
fix group members insert throwing exception
Ioannis Oct 14, 2025
60bd3ba
MVEA for person and orgidentity.
Ioannis Oct 14, 2025
501dfa5
Fix mveas
Ioannis Oct 14, 2025
fd8c1d9
Job history records+servers
Ioannis Oct 16, 2025
f44373e
Servers transmogrify
Ioannis Oct 16, 2025
ddb568e
Fix command line printer and verbosity
Ioannis Oct 17, 2025
365c92f
Fix verbosity print
Ioannis Oct 17, 2025
9da3966
cleaning
Ioannis Oct 18, 2025
b6b09b4
Put warn counting in cache.Load the plugin in the Application.php.
Ioannis Oct 21, 2025
7a8e64d
message templates
Ioannis Nov 11, 2025
0fbcd18
Notifications table
Ioannis Nov 11, 2025
d66c85b
transmogrify petitions
Ioannis Nov 12, 2025
ff17fcb
Add support to skip certain tables during transmogrification
Ioannis Nov 15, 2025
5d6de76
petition status mapper
Ioannis Nov 16, 2025
cfbad9e
Fix login identifier mapping issues.Added enrollment flow transmogrif…
Ioannis Nov 18, 2025
fdd29a6
Historic Petition Viewer initial commit
Ioannis Nov 18, 2025
e5535f7
Sync historic metadata to the plugin's tables
Ioannis Nov 18, 2025
308303e
HistoricPetitionViewer and Transmogrification adjucstments
Ioannis Nov 19, 2025
e9f3b7f
Add HistoricPetitionViewer cakephp load dependency
Ioannis Nov 19, 2025
d2b8254
Fix person status mapping
Ioannis Nov 20, 2025
bbb34fd
Pipelines. Login identifier importing fix/improve. Person status mapper.
Ioannis Nov 20, 2025
f9d1a6e
OrgIdentitySources to ExternalIdentitySources
Ioannis Nov 22, 2025
8154041
External Identity Source Records
Ioannis Nov 24, 2025
1066e54
orcid sources
Ioannis Nov 25, 2025
dae4928
EnvSources transmogrification. Improve MVA mappers.
Ioannis Nov 26, 2025
6c95f4a
ApiSources
Ioannis Nov 27, 2025
6dd120c
SqlSource,FileSource. Mapper and cache engine improvements.
Ioannis Nov 28, 2025
c208d6b
Authenticators wrappers
Ioannis Nov 29, 2025
5f3caad
SshKeyAuthenticators
Ioannis Nov 30, 2025
ac4a966
PasswordAuthenticator
Ioannis Nov 30, 2025
1a89caa
Fix external identity sources status/sync_mode transmogrification
Ioannis Dec 19, 2025
83876fe
add autoload requirements
Ioannis Dec 19, 2025
fa3b2b8
Comment out pause statement
Ioannis Dec 19, 2025
45cd69a
Remove obsolete code. Database command will sync the transmogrificati…
Ioannis Jan 15, 2026
de2d565
Add population_hide/CoSettings column
Ioannis Jan 15, 2026
6d7de30
Moved services from core to plugin
Ioannis Feb 1, 2026
1079c25
Styling for Historic Petition attributes (CFM-29)
arlen Jan 13, 2026
3329b32
Fix autoload-static conflict
Ioannis Feb 3, 2026
df1a9ea
Transmogrify IdentifierAssignments
Ioannis Feb 18, 2026
accc637
Improve transmogrification process of selected tables
Ioannis Feb 19, 2026
58b7b91
Add uuid to all models that support it
Ioannis Feb 21, 2026
fbaabde
Drop non unique indexes on data loading
Ioannis Feb 27, 2026
b1e7d28
Add support for provisioning targets
Ioannis Mar 25, 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