From eaf7374d8e825fb9b7e5ed4b26e6c457942b2ca6 Mon Sep 17 00:00:00 2001
From: Dominik Frantisek Bucik <bucik@ics.muni.cz>
Date: Wed, 19 Apr 2023 19:43:18 +0200
Subject: [PATCH 1/3] =?UTF-8?q?feat:=20=F0=9F=8E=B8=20Update=20bbmri=5F*?=
 =?UTF-8?q?=20gen=20scripts=20for=20after=20BBMRI=20migration?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Change uses the BBMRI User ID extracted from a virtual attribute. The
reason for doing so is the change in IDs of users when they are moved
into th LS AAI.
---
 gen/bbmri_collections | 11 ++++++++---
 gen/bbmri_networks    | 11 ++++++++---
 2 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/gen/bbmri_collections b/gen/bbmri_collections
index 4952e98d..48555b5a 100755
--- a/gen/bbmri_collections
+++ b/gen/bbmri_collections
@@ -14,7 +14,7 @@ use utf8;
 
 local $::SERVICE_NAME = "bbmri_collections";
 local $::PROTOCOL_VERSION = "1.0.1";
-my $SCRIPT_VERSION = "1.0.2";
+my $SCRIPT_VERSION = "1.0.3";
 
 perunServicesInit::init;
 my $DIRECTORY = perunServicesInit::getDirectory;
@@ -27,6 +27,7 @@ sub processMemberships;
 
 #Constants
 our $A_USER_ID;                   *A_USER_ID =               \'urn:perun:user:attribute-def:core:id';
+our $A_BBMRI_USER_ID;             *A_BBMRI_USER_ID =         \'urn:perun:user:attribute-def:virt:bbmriUserId';
 our $A_USER_STATUS;               *A_USER_STATUS =           \'urn:perun:member:attribute-def:core:status';
 our $A_MEMBER_IS_SUSPENDED;       *A_MEMBER_IS_SUSPENDED =   \'urn:perun:member:attribute-def:virt:isSuspended';
 our $A_USER_EMAIL;                *A_USER_EMAIL =            \'urn:perun:user:attribute-def:def:preferredMail';
@@ -48,6 +49,7 @@ our $u_email = {};
 our $u_name = {};
 our $u_eppn = {};
 our $u_organization = {};
+our $u_bbmri_user_id = {};
 
 our $groupStruc = {};
 our $g_name = {};
@@ -71,7 +73,8 @@ foreach my $resourceId ( $data->getResourceIds() ) {
 my @users;
 foreach my $uid (sort keys %$userStruc) {
 	my $user = {};
-	$user->{"id"} = $uid;
+	$user->{"id"} = "$userStruc->{$uid}->{$u_bbmri_user_id}";
+	$user->{"perun_user_id"} = $uid;
 	$user->{"displayName"} = $userStruc->{$uid}->{$u_name};
 	$user->{"status"} = $userStruc->{$uid}->{$u_status};
 	$user->{"mail"} = $userStruc->{$uid}->{$u_email};
@@ -100,7 +103,7 @@ foreach my $gid (sort keys %$groupStruc) {
 	my @members;
 	foreach my $uid (sort keys %{$membershipStruc->{$gid}}){
 		my $struct = {};
-		$struct->{"userId"} = $uid;
+		$struct->{"userId"} = "$userStruc->{$uid}->{$u_bbmri_user_id}";
 		push @members, $struct;
 	}
 
@@ -125,6 +128,7 @@ sub processUsers {
 	my ($gid, $memberId) = @_;
 
 	my $uid = $data->getUserAttributeValue( member => $memberId, attrName => $A_USER_ID );
+	my $bbmriUserId = $data->getUserAttributeValue( member => $memberId, attrName => $A_BBMRI_USER_ID );
 	my $status = $data->getMemberAttributeValue(member => $memberId, attrName => $A_USER_STATUS);
 	my $isSuspended = $data->getMemberAttributeValue( member => $memberId, attrName => $A_MEMBER_IS_SUSPENDED );
 	if ($isSuspended) { $status = $STATUS_SUSPENDED; }
@@ -151,6 +155,7 @@ sub processUsers {
 	}
 	else{
 		$userStruc->{$uid}->{$u_status} = $status;
+		$userStruc->{$uid}->{$u_bbmri_user_id} = $bbmriUserId;
 		$userStruc->{$uid}->{$u_email} = $email;
 		$userStruc->{$uid}->{$u_name} = $d_name;
 		$userStruc->{$uid}->{$u_eppn} = \@eppns;
diff --git a/gen/bbmri_networks b/gen/bbmri_networks
index a7b34d63..7813dc2b 100755
--- a/gen/bbmri_networks
+++ b/gen/bbmri_networks
@@ -14,7 +14,7 @@ use utf8;
 
 local $::SERVICE_NAME = "bbmri_networks";
 local $::PROTOCOL_VERSION = "1.0.0";
-my $SCRIPT_VERSION = "1.0.1";
+my $SCRIPT_VERSION = "1.0.2";
 
 perunServicesInit::init;
 my $DIRECTORY = perunServicesInit::getDirectory;
@@ -27,6 +27,7 @@ sub processMemberships;
 
 #Constants
 our $A_USER_ID;                   *A_USER_ID =               \'urn:perun:user:attribute-def:core:id';
+our $A_BBMRI_USER_ID;             *A_BBMRI_USER_ID =         \'urn:perun:user:attribute-def:virt:bbmriUserId';
 our $A_USER_STATUS;               *A_USER_STATUS =           \'urn:perun:member:attribute-def:core:status';
 our $A_USER_EMAIL;                *A_USER_EMAIL =            \'urn:perun:user:attribute-def:def:preferredMail';
 our $A_USER_EPPNS;                *A_USER_EPPNS =            \'urn:perun:user:attribute-def:virt:eduPersonPrincipalNames';
@@ -45,6 +46,7 @@ our $u_status = {};
 our $u_email = {};
 our $u_name = {};
 our $u_eppn = {};
+our $u_bbmri_user_id = {};
 
 our $groupStruc = {};
 our $g_name = {};
@@ -67,7 +69,8 @@ foreach my $resourceId ( $data->getResourceIds() ) {
 my @users;
 foreach my $uid (sort keys %$userStruc) {
 	my $user = {};
-	$user->{"id"} = $uid;
+	$user->{"id"} = "$userStruc->{$uid}->{$u_bbmri_user_id}";
+	$user->{"perun_user_id"} = $uid;
 	$user->{"displayName"} = $userStruc->{$uid}->{$u_name};
 	$user->{"status"} = $userStruc->{$uid}->{$u_status};
 	$user->{"mail"} = $userStruc->{$uid}->{$u_email};
@@ -93,7 +96,7 @@ foreach my $gid (sort keys %$groupStruc) {
 	my @members;
 	foreach my $uid (sort keys %{$membershipStruc->{$gid}}){
 		my $struct = {};
-		$struct->{"userId"} = $uid;
+		$struct->{"userId"} = "$userStruc->{$uid}->{$u_bbmri_user_id}";
 		push @members, $struct;
 	}
 
@@ -118,6 +121,7 @@ sub processUsers {
 	my ($gid, $memberId) = @_;
 
 	my $uid = $data->getUserAttributeValue( member => $memberId, attrName => $A_USER_ID );
+	my $bbmriUserId = $data->getUserAttributeValue( member => $memberId, attrName => $A_BBMRI_USER_ID );
 	my $status = $data->getMemberAttributeValue( member => $memberId, attrName => $A_USER_STATUS );
 	my $isSuspended = $data->getMemberAttributeValue( member => $memberId, attrName => $A_MEMBER_IS_SUSPENDED );
 	if ($isSuspended) { $status = $STATUS_SUSPENDED; }
@@ -143,6 +147,7 @@ sub processUsers {
 	}
 	else{
 		$userStruc->{$uid}->{$u_status} = $status;
+		$userStruc->{$uid}->{$u_bbmri_user_id} = $bbmriUserId;
 		$userStruc->{$uid}->{$u_email} = $email;
 		$userStruc->{$uid}->{$u_name} = $d_name;
 		$userStruc->{$uid}->{$u_eppn} = \@eppns;
-- 
GitLab


From f09bad3c395bf36f9aa5c3339959c6b781b06c45 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dominik=20Franti=C5=A1ek=20Bu=C4=8D=C3=ADk?=
 <bucik@ics.muni.cz>
Date: Fri, 28 Apr 2023 11:24:21 +0200
Subject: [PATCH 2/3] Update gen/bbmri_networks

Co-authored-by: Johaney-s <73999257+Johaney-s@users.noreply.github.com>
---
 gen/bbmri_networks | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gen/bbmri_networks b/gen/bbmri_networks
index 7813dc2b..f3e62fda 100755
--- a/gen/bbmri_networks
+++ b/gen/bbmri_networks
@@ -27,7 +27,7 @@ sub processMemberships;
 
 #Constants
 our $A_USER_ID;                   *A_USER_ID =               \'urn:perun:user:attribute-def:core:id';
-our $A_BBMRI_USER_ID;             *A_BBMRI_USER_ID =         \'urn:perun:user:attribute-def:virt:bbmriUserId';
+our $A_BBMRI_USER_ID;             *A_BBMRI_USER_ID =         \'urn:perun:user:attribute-def:virt:login-namespace:bbmriid-persistent';
 our $A_USER_STATUS;               *A_USER_STATUS =           \'urn:perun:member:attribute-def:core:status';
 our $A_USER_EMAIL;                *A_USER_EMAIL =            \'urn:perun:user:attribute-def:def:preferredMail';
 our $A_USER_EPPNS;                *A_USER_EPPNS =            \'urn:perun:user:attribute-def:virt:eduPersonPrincipalNames';
-- 
GitLab


From dc39ee88f31997b5350e57214d93d27634b8d006 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Dominik=20Franti=C5=A1ek=20Bu=C4=8D=C3=ADk?=
 <bucik@ics.muni.cz>
Date: Fri, 28 Apr 2023 11:24:27 +0200
Subject: [PATCH 3/3] Update gen/bbmri_collections

Co-authored-by: Johaney-s <73999257+Johaney-s@users.noreply.github.com>
---
 gen/bbmri_collections | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gen/bbmri_collections b/gen/bbmri_collections
index 48555b5a..da168a28 100755
--- a/gen/bbmri_collections
+++ b/gen/bbmri_collections
@@ -27,7 +27,7 @@ sub processMemberships;
 
 #Constants
 our $A_USER_ID;                   *A_USER_ID =               \'urn:perun:user:attribute-def:core:id';
-our $A_BBMRI_USER_ID;             *A_BBMRI_USER_ID =         \'urn:perun:user:attribute-def:virt:bbmriUserId';
+our $A_BBMRI_USER_ID;             *A_BBMRI_USER_ID =         \'urn:perun:user:attribute-def:virt:login-namespace:bbmriid-persistent';
 our $A_USER_STATUS;               *A_USER_STATUS =           \'urn:perun:member:attribute-def:core:status';
 our $A_MEMBER_IS_SUSPENDED;       *A_MEMBER_IS_SUSPENDED =   \'urn:perun:member:attribute-def:virt:isSuspended';
 our $A_USER_EMAIL;                *A_USER_EMAIL =            \'urn:perun:user:attribute-def:def:preferredMail';
-- 
GitLab