Skip to content

Commit d13b835

Browse files
committed
[smarcet] - #13520
* fix on ccla admin/refactoring
1 parent d8729cf commit d13b835

5 files changed

Lines changed: 35 additions & 39 deletions

File tree

ICLA/code/infrastructure/services/TeamInvitationEmailSender.php

Lines changed: 5 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -16,23 +16,12 @@
1616
*/
1717
final class TeamInvitationEmailSender implements ITeamInvitationSender {
1818

19-
/**
20-
* @var ITeamInvitationRepository
21-
*/
22-
private $team_invitation_repository;
23-
24-
/**
25-
* @param ITeamInvitationRepository $team_invitation_repository
26-
*/
27-
public function __construct(ITeamInvitationRepository $team_invitation_repository){
28-
$this->team_invitation_repository = $team_invitation_repository;
29-
30-
}
3119
/**
3220
* @param ITeamInvitation $invitation
21+
* @param string|null $token
3322
* @return void
3423
*/
35-
public function sendInvitation(ITeamInvitation $invitation) {
24+
public function sendInvitation(ITeamInvitation $invitation, $token = null) {
3625
$invite_dto = $invitation->getInviteInfo();
3726

3827
$email_to = $invite_dto->getEmail();
@@ -42,18 +31,15 @@ public function sendInvitation(ITeamInvitation $invitation) {
4231

4332
$email = EmailFactory::getInstance()->buildEmail(CCLA_TEAM_INVITATION_EMAIL_FROM, $email_to , "You Have been Invited to Team ".$invitation->getTeam()->getName());
4433

45-
$template_data = array(
34+
$template_data = [
4635
'FirstName' => $invite_dto->getFirstName(),
4736
'LastName' => $invite_dto->getLastName(),
4837
'TeamName' => $invitation->getTeam()->getName(),
4938
'CompanyName' => $invitation->getTeam()->getCompany()->Name
50-
);
39+
];
5140

52-
if($invitation->isInviteRegisteredAsUser()){
41+
if(!empty($token)){
5342
$email->setTemplate('TeamInvitation_RegisteredUser');
54-
do{
55-
$token = $invitation->generateConfirmationToken();
56-
} while ($this->team_invitation_repository->existsConfirmationToken($token));
5743
$template_data['ConfirmationLink'] = sprintf('%s/team-invitations/%s/confirm', Director::protocolAndHost(), $token);
5844
}
5945
else{

ICLA/code/interfaces/restfull_api/ICLARestfulAPI.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ protected function authorize()
139139
public function addInvitation(){
140140
$data = $this->getJsonRequest();
141141
try{
142-
$entity = $this->team_manager->sendInvitation($data, new TeamInvitationEmailSender($this->invitation_repository));
142+
$entity = $this->team_manager->sendInvitation($data, new TeamInvitationEmailSender());
143143
return $this->created($entity->getIdentifier());
144144
}
145145
catch(NotFoundEntityException $ex1){

ICLA/code/interfaces/web/TeamInvitationConfirmation_Controller.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@ final class TeamInvitationConfirmation_Controller extends AbstractController {
1818
/**
1919
* @var array
2020
*/
21-
static $url_handlers = array(
21+
static $url_handlers = [
2222
'GET $CONFIRMATION_TOKEN/confirm' => 'confirmTeamInvitation',
23-
);
23+
];
2424

2525
/**
2626
* @var array
2727
*/
28-
static $allowed_actions = array(
28+
static $allowed_actions = [
2929
'confirmTeamInvitation',
30-
);
30+
];
3131

3232
/**
3333
* @var ICLAMemberRepository
@@ -59,13 +59,21 @@ public function __construct(){
5959
SapphireTransactionManager::getInstance());
6060
}
6161

62+
public function init()
63+
{
64+
parent::init();
65+
Page_Controller::AddRequirements();
66+
SweetAlert2Dependencies::renderRequirements();
67+
}
68+
/**
6269
/**
6370
* @return string|void
6471
*/
6572
public function confirmTeamInvitation(){
6673
$token = $this->request->param('CONFIRMATION_TOKEN');
6774
try{
6875
$current_member = Member::currentUser();
76+
6977
if(is_null($current_member))
7078
return Controller::curr()->redirect("Security/login?BackURL=" . urlencode($_SERVER['REQUEST_URI']));
7179
$team = $this->team_manager->confirmInvitation($token, $current_member);
@@ -75,7 +83,7 @@ public function confirmTeamInvitation(){
7583
SS_Log::log($ex1,SS_Log::ERR);
7684
$invitation = $this->invitation_repository->findByConfirmationToken($token);
7785

78-
return $this->renderWith(array('TeamInvitationConfirmation_belongs_2_another_user','Page'), array('UserName' => $invitation->getMember()->Email));
86+
return $this->renderWith(['TeamInvitationConfirmation_belongs_2_another_user','Page'], ['UserName' => $invitation->getMember()->Email]);
7987
}
8088
catch(Exception $ex){
8189
SS_Log::log($ex,SS_Log::ERR);

ICLA/code/model/CCLATeamManager.php

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,41 +74,42 @@ public function __construct(ITeamInvitationRepository $invitation_repository,
7474
*/
7575
public function sendInvitation(array $data, ITeamInvitationSender $invitation_sender){
7676

77-
$team_repository = $this->team_repository;
78-
$invitation_factory = $this->invitation_factory;
79-
$validator_factory = $this->validator_factory;
80-
$member_repository = $this->member_repository;
81-
$invitation_repository = $this->invitation_repository;
8277

83-
return $this->tx_manager->transaction(function() use($data, $invitation_repository, $team_repository, $invitation_factory , $validator_factory, $member_repository, $invitation_sender){
84-
$validator = $validator_factory->buildValidatorForTeamInvitation($data);
78+
return $this->tx_manager->transaction(function() use($data, $invitation_sender){
79+
$validator = $this->validator_factory->buildValidatorForTeamInvitation($data);
8580
if ($validator->fails()) {
8681
throw new EntityValidationException($validator->messages());
8782
}
8883

89-
$team = $team_repository->getById((int)$data['team_id']);
84+
$team = $this->team_repository->getById((int)$data['team_id']);
9085
if(!$team) throw new NotFoundEntityException('Team',sprintf('id %s',$data['team_id']));
9186

9287
$member = false;
9388
//is a already selected ICLA/CCLA Member
9489
if(isset($data['member_id'])){
95-
$member = $member_repository->getById((int)$data['member_id']);
90+
$member = $this->member_repository->getById((int)$data['member_id']);
9691
if(!$member) throw new NotFoundEntityException('Member',sprintf('id %s',$data['member_id']));
9792
}
9893
else {
99-
$member = $member_repository->findByEmail(trim($data['email']));
94+
$member = $this->member_repository->findByEmail(trim($data['email']));
10095
if($member && !$member->hasSignedCLA())
10196
throw new MemberNotSignedCCLAException('This user has not yet signed the ICLA. Please ensure they have followed the appropriate steps outlined here: https://wiki.openstack.org/wiki/How_To_Contribute#Contributor_License_Agreement');
10297
}
10398

10499
if($member && ($team->isMember($member) || $team->isInvite($member)))
105100
throw new TeamMemberAlreadyExistsException('Member Already exists on Team!');
106101

107-
$invitation = $invitation_factory->buildInvitation(new InvitationDTO($data['first_name'], $data['last_name'], $data['email'], $team, $member ));
102+
$invitation = $this->invitation_factory->buildInvitation(new InvitationDTO($data['first_name'], $data['last_name'], $data['email'], $team, $member ));
103+
$token = null;
104+
if($invitation->isInviteRegisteredAsUser()){
105+
do {
106+
$token = $invitation->generateConfirmationToken();
107+
} while ($this->invitation_repository->existsConfirmationToken($token));
108+
}
108109

109-
$invitation_repository->add($invitation);
110+
$this->invitation_repository->add($invitation);
110111

111-
$invitation_sender->sendInvitation($invitation);
112+
$invitation_sender->sendInvitation($invitation, $token);
112113

113114
return $invitation;
114115

ICLA/code/model/ITeamInvitationSender.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ interface ITeamInvitationSender {
1818

1919
/**
2020
* @param ITeamInvitation $invitation
21+
* @param string $token
2122
* @return void
2223
*/
23-
public function sendInvitation(ITeamInvitation $invitation);
24+
public function sendInvitation(ITeamInvitation $invitation, $token = null);
2425
}

0 commit comments

Comments
 (0)