1
0
Fork 0
mirror of synced 2024-06-29 03:30:34 +12:00
This commit is contained in:
Eldad Fux 2020-01-18 16:47:08 +02:00
parent 3a68c963fe
commit f034d1024d
2 changed files with 21 additions and 11 deletions

View file

@ -259,9 +259,9 @@ $utopia->post('/v1/teams/:teamId/memberships')
->param('email', '', function () { return new Email(); }, 'New team member email address.') ->param('email', '', function () { return new Email(); }, 'New team member email address.')
->param('name', '', function () { return new Text(100); }, 'New team member name.', true) ->param('name', '', function () { return new Text(100); }, 'New team member name.', true)
->param('roles', [], function () { return new ArrayList(new Text(128)); }, 'Invite roles array. Learn more about [roles and permissions](/docs/permissions).') ->param('roles', [], function () { return new ArrayList(new Text(128)); }, 'Invite roles array. Learn more about [roles and permissions](/docs/permissions).')
->param('redirect', '', function () use ($clients) { return new Host($clients); }, 'Reset page to redirect user back to your app from the invitation email.') ->param('url', '', function () use ($clients) { return new Host($clients); }, 'URL to redirect the user back to your app from the invitation email.') // TODO add our own built-in confirm page
->action( ->action(
function ($teamId, $email, $name, $roles, $redirect) use ($response, $register, $project, $user, $audit, $projectDB) { function ($teamId, $email, $name, $roles, $url) use ($response, $register, $project, $user, $audit, $projectDB) {
$name = (empty($name)) ? $email : $name; $name = (empty($name)) ? $email : $name;
$team = $projectDB->getDocument($teamId); $team = $projectDB->getDocument($teamId);
@ -354,9 +354,9 @@ $utopia->post('/v1/teams/:teamId/memberships')
throw new Exception('Failed saving membership to DB', 500); throw new Exception('Failed saving membership to DB', 500);
} }
$redirect = Template::parseURL($redirect); $url = Template::parseURL($url);
$redirect['query'] = Template::mergeQuery(((isset($redirect['query'])) ? $redirect['query'] : ''), ['inviteId' => $membership->getUid(), 'teamId' => $team->getUid(), 'userId' => $invitee->getUid(), 'secret' => $secret]); $url['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['inviteId' => $membership->getUid(), 'teamId' => $team->getUid(), 'userId' => $invitee->getUid(), 'secret' => $secret]);
$redirect = Template::unParseURL($redirect); $url = Template::unParseURL($url);
$body = new Template(__DIR__.'/../../config/locales/templates/'.Locale::getText('auth.emails.invitation.body')); $body = new Template(__DIR__.'/../../config/locales/templates/'.Locale::getText('auth.emails.invitation.body'));
$body $body
@ -364,7 +364,7 @@ $utopia->post('/v1/teams/:teamId/memberships')
->setParam('{{project}}', $project->getAttribute('name', ['[APP-NAME]'])) ->setParam('{{project}}', $project->getAttribute('name', ['[APP-NAME]']))
->setParam('{{team}}', $team->getAttribute('name', '[TEAM-NAME]')) ->setParam('{{team}}', $team->getAttribute('name', '[TEAM-NAME]'))
->setParam('{{owner}}', $user->getAttribute('name', '')) ->setParam('{{owner}}', $user->getAttribute('name', ''))
->setParam('{{redirect}}', $redirect) ->setParam('{{redirect}}', $url)
; ;
$mail = $register->get('smtp'); /* @var $mail \PHPMailer\PHPMailer\PHPMailer */ $mail = $register->get('smtp'); /* @var $mail \PHPMailer\PHPMailer\PHPMailer */
@ -387,8 +387,9 @@ $utopia->post('/v1/teams/:teamId/memberships')
; ;
$response $response
//->setStatusCode(Response::STATUS_CODE_CREATED) TODO change response of this endpoint ->setStatusCode(Response::STATUS_CODE_CREATED) // TODO change response of this endpoint
->noContent(); ->json($membership->getArrayCopy())
;
} }
); );

View file

@ -262,16 +262,25 @@ trait TeamsBase
return []; return [];
} }
public function testCreateTeamMembership():array /**
* @depends testCreateTeam
*/
public function testCreateTeamMembership($data):array
{ {
$uid = (isset($data['teamUid'])) ? $data['teamUid'] : '';
$email = uniqid().'friend@localhost.test';
/** /**
* Test for SUCCESS * Test for SUCCESS
*/ */
$response = $this->client->call(Client::METHOD_POST, '/teams', array_merge([ $response = $this->client->call(Client::METHOD_POST, '/teams/'.$uid.'/memberships', array_merge([
'content-type' => 'application/json', 'content-type' => 'application/json',
'x-appwrite-project' => $this->getProject()['$uid'], 'x-appwrite-project' => $this->getProject()['$uid'],
], $this->getHeaders()), [ ], $this->getHeaders()), [
'name' => 'Demo' 'email' => $email,
'name' => 'Friend User',
'roles' => ['admin', 'editor'],
'url' => 'http://localhost:5000/join-us#title'
]); ]);
$teamUid = $response['body']['$uid']; $teamUid = $response['body']['$uid'];