1
0
Fork 0
mirror of synced 2024-06-26 10:10:57 +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('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('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(
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;
$team = $projectDB->getDocument($teamId);
@ -354,9 +354,9 @@ $utopia->post('/v1/teams/:teamId/memberships')
throw new Exception('Failed saving membership to DB', 500);
}
$redirect = Template::parseURL($redirect);
$redirect['query'] = Template::mergeQuery(((isset($redirect['query'])) ? $redirect['query'] : ''), ['inviteId' => $membership->getUid(), 'teamId' => $team->getUid(), 'userId' => $invitee->getUid(), 'secret' => $secret]);
$redirect = Template::unParseURL($redirect);
$url = Template::parseURL($url);
$url['query'] = Template::mergeQuery(((isset($url['query'])) ? $url['query'] : ''), ['inviteId' => $membership->getUid(), 'teamId' => $team->getUid(), 'userId' => $invitee->getUid(), 'secret' => $secret]);
$url = Template::unParseURL($url);
$body = new Template(__DIR__.'/../../config/locales/templates/'.Locale::getText('auth.emails.invitation.body'));
$body
@ -364,7 +364,7 @@ $utopia->post('/v1/teams/:teamId/memberships')
->setParam('{{project}}', $project->getAttribute('name', ['[APP-NAME]']))
->setParam('{{team}}', $team->getAttribute('name', '[TEAM-NAME]'))
->setParam('{{owner}}', $user->getAttribute('name', ''))
->setParam('{{redirect}}', $redirect)
->setParam('{{redirect}}', $url)
;
$mail = $register->get('smtp'); /* @var $mail \PHPMailer\PHPMailer\PHPMailer */
@ -387,8 +387,9 @@ $utopia->post('/v1/teams/:teamId/memberships')
;
$response
//->setStatusCode(Response::STATUS_CODE_CREATED) TODO change response of this endpoint
->noContent();
->setStatusCode(Response::STATUS_CODE_CREATED) // TODO change response of this endpoint
->json($membership->getArrayCopy())
;
}
);

View file

@ -262,16 +262,25 @@ trait TeamsBase
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
*/
$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',
'x-appwrite-project' => $this->getProject()['$uid'],
], $this->getHeaders()), [
'name' => 'Demo'
'email' => $email,
'name' => 'Friend User',
'roles' => ['admin', 'editor'],
'url' => 'http://localhost:5000/join-us#title'
]);
$teamUid = $response['body']['$uid'];