Skip to content

Cfm 29 transmogrify plugin #347

Open
wants to merge 36 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
99c89d3
Transmogrify plugin
Ioannis Oct 3, 2025
6756aad
Fixes
Ioannis Oct 3, 2025
cbb7bc2
Improvements.Fixed org identities transmogrify.
Ioannis Oct 10, 2025
6f92d3b
OrgIdentities eligibility to transmogrify
Ioannis Oct 11, 2025
8c50fd0
Update Readme.md
Ioannis Oct 11, 2025
03693d9
Fix groups transmogrify according to AR-G-9
Ioannis Oct 12, 2025
09fa6b8
fix group members insert throwing exception
Ioannis Oct 14, 2025
82bfe12
MVEA for person and orgidentity.
Ioannis Oct 14, 2025
cb58e84
Fix mveas
Ioannis Oct 14, 2025
ffd17ee
Job history records+servers
Ioannis Oct 16, 2025
917e279
Servers transmogrify
Ioannis Oct 16, 2025
b58bdc8
Fix command line printer and verbosity
Ioannis Oct 17, 2025
09b179b
Fix verbosity print
Ioannis Oct 17, 2025
b4a38d5
cleaning
Ioannis Oct 18, 2025
1a11a43
Put warn counting in cache.Load the plugin in the Application.php.
Ioannis Oct 21, 2025
d2068d4
message templates
Ioannis Nov 11, 2025
c22f558
Notifications table
Ioannis Nov 11, 2025
eb17b56
transmogrify petitions
Ioannis Nov 12, 2025
0601705
Add support to skip certain tables during transmogrification
Ioannis Nov 15, 2025
00aca69
petition status mapper
Ioannis Nov 16, 2025
eaca142
Fix login identifier mapping issues.Added enrollment flow transmogrif…
Ioannis Nov 18, 2025
d1190d9
Historic Petition Viewer initial commit
Ioannis Nov 18, 2025
1ac012b
Sync historic metadata to the plugin's tables
Ioannis Nov 18, 2025
b18f161
HistoricPetitionViewer and Transmogrification adjucstments
Ioannis Nov 19, 2025
9ffee20
Add HistoricPetitionViewer cakephp load dependency
Ioannis Nov 19, 2025
50c8b1c
Fix person status mapping
Ioannis Nov 20, 2025
f43bdf0
Pipelines. Login identifier importing fix/improve. Person status mapper.
Ioannis Nov 20, 2025
6713847
OrgIdentitySources to ExternalIdentitySources
Ioannis Nov 22, 2025
a314cd6
External Identity Source Records
Ioannis Nov 24, 2025
f45182a
orcid sources
Ioannis Nov 25, 2025
611d90e
EnvSources transmogrification. Improve MVA mappers.
Ioannis Nov 26, 2025
a397dfe
ApiSources
Ioannis Nov 27, 2025
5cdae83
SqlSource,FileSource. Mapper and cache engine improvements.
Ioannis Nov 28, 2025
f6d7f51
Authenticators wrappers
Ioannis Nov 29, 2025
24d5d20
SshKeyAuthenticators
Ioannis Nov 30, 2025
3917640
PasswordAuthenticator
Ioannis Nov 30, 2025
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
8 changes: 6 additions & 2 deletions app/composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@
"PipelineToolkit\\": "availableplugins/PipelineToolkit/src/",
"SqlConnector\\": "availableplugins/SqlConnector/src/",
"SshKeyAuthenticator\\": "plugins/SshKeyAuthenticator/src/",
"CoreJob\\": "plugins/CoreJob/src/"
"CoreJob\\": "plugins/CoreJob/src/",
"Transmogrify\\": "plugins/Transmogrify/src/",
"HistoricPetitionViewer\\": "plugins/HistoricPetitionViewer/src/"
}
},
"autoload-dev": {
Expand All @@ -66,7 +68,9 @@
"PipelineToolkit\\Test\\": "availableplugins/PipelineToolkit/tests/",
"SqlConnector\\Test\\": "availableplugins/SqlConnector/tests/",
"SshKeyAuthenticator\\Test\\": "plugins/SshKeyAuthenticator/tests/",
"CoreJob\\Test\\": "plugins/CoreJob/tests/"
"CoreJob\\Test\\": "plugins/CoreJob/tests/",
"Transmogrify\\": "plugins/Transmogrify/src/",
"HistoricPetitionViewer\\": "plugins/HistoricPetitionViewer/src/"
}
},
"scripts": {
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,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'
]
];
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
<?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 HistoricPetitionViewer
*/
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
{
// remove this method hook if you don't need it
}

/**
* 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
{
// remove this method hook if you don't need it
$routes->plugin(
'HistoricPetitionViewer',
['path' => '/historic-petition-viewer'],
function (RouteBuilder $builder) {
// Add custom routes here

$builder->fallbacks();
}
);
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
// remove this method hook if you don't need it

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
// remove this method hook if you don't need it

$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/5/en/development/dependency-injection.html#dependency-injection
*/
public function services(ContainerInterface $container): void
{
// Add your services here
// remove this method hook if you don't need it
}
}
Loading