Cleanup status codes
Signed-off-by: Julius Härtl <jus@bitgrid.net>
This commit is contained in:
parent
74b5428193
commit
fffdb77ff6
|
|
@ -42,12 +42,10 @@
|
|||
<name>token</name>
|
||||
<type>text</type>
|
||||
<notnull>true</notnull>
|
||||
<unique>true</unique>
|
||||
</field>
|
||||
<field>
|
||||
<name>client_secret</name>
|
||||
<type>text</type>
|
||||
<unique>true</unique>
|
||||
</field>
|
||||
<field>
|
||||
<name>requested</name>
|
||||
|
|
|
|||
|
|
@ -49,8 +49,9 @@ class ApiController extends OCSController {
|
|||
/** @var Defaults */
|
||||
private $defaults;
|
||||
|
||||
const OCS_STATUS_PENDING = 403;
|
||||
const OCS_STATUS_RESENT = 403;
|
||||
const REGISTRATION_STATUS_COMPLETE = 0;
|
||||
const REGISTRATION_STATUS_PENDING = 1;
|
||||
const REGISTRATION_STATUS_EXISTING = 2;
|
||||
|
||||
public function __construct($appName,
|
||||
IRequest $request,
|
||||
|
|
@ -103,33 +104,39 @@ class ApiController extends OCSController {
|
|||
try {
|
||||
/** @var Registration $registration */
|
||||
$registration = $this->registrationService->getRegistrationForSecret($clientSecret);
|
||||
if(!$registration->getEmailConfirmed()) {
|
||||
throw new OCSException(
|
||||
$this->l10n->t('Your registration is pending. Please confirm your email address.'),
|
||||
self::OCS_STATUS_PENDING
|
||||
);
|
||||
} else {
|
||||
// create account if email confirmed and not already created
|
||||
$user = $this->registrationService->getUserAccount($registration);
|
||||
if($user === null) {
|
||||
$user = $this->registrationService->createAccount($registration);
|
||||
}
|
||||
$this->registrationService->loginUser($user->getUID(), $registration->getUsername(), $registration->getPassword(), true);
|
||||
$appPassword = $this->registrationService->generateAppPassword($user->getUID());
|
||||
$data = [
|
||||
'appPassword' => $appPassword,
|
||||
'cloudUrl' => $this->defaults->getBaseUrl()
|
||||
];
|
||||
$this->registrationService->deleteRegistration($registration);
|
||||
return new DataResponse($data, Http::STATUS_OK);
|
||||
}
|
||||
} catch (DoesNotExistException $e) {
|
||||
throw new OCSNotFoundException('No pending registration.');
|
||||
}
|
||||
|
||||
if (!$registration->getEmailConfirmed()) {
|
||||
return new DataResponse(
|
||||
[
|
||||
'registrationStatus' => self::REGISTRATION_STATUS_PENDING,
|
||||
'message' => $this->l10n->t('Your registration is pending. Please confirm your email address.')
|
||||
],
|
||||
Http::STATUS_OK
|
||||
);
|
||||
} else {
|
||||
// create account if email confirmed and not already created
|
||||
$user = $this->registrationService->getUserAccount($registration);
|
||||
if ($user === null) {
|
||||
$user = $this->registrationService->createAccount($registration);
|
||||
}
|
||||
$this->registrationService->loginUser($user->getUID(), $registration->getUsername(), $registration->getPassword(), true);
|
||||
$appPassword = $this->registrationService->generateAppPassword($user->getUID());
|
||||
$data = [
|
||||
'appPassword' => $appPassword,
|
||||
'cloudUrl' => $this->defaults->getBaseUrl(),
|
||||
'registrationStatus' => self::REGISTRATION_STATUS_COMPLETE
|
||||
];
|
||||
$this->registrationService->deleteRegistration($registration);
|
||||
return new DataResponse($data, Http::STATUS_OK);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @PublicPage
|
||||
* @AnonRateThrottle(limit=5, period=1)
|
||||
*
|
||||
* @param string $username
|
||||
* @param string $displayname
|
||||
|
|
@ -152,17 +159,23 @@ class ApiController extends OCSController {
|
|||
} else {
|
||||
$this->registrationService->generateNewToken($registration);
|
||||
$this->mailService->sendTokenByMail($registration);
|
||||
throw new OCSException($this->l10n->t('There is already a pending registration with this email, a new verification email has been sent to the address.'), self::OCS_STATUS_RESENT);
|
||||
return new DataResponse(
|
||||
[
|
||||
'registrationStatus' => self::REGISTRATION_STATUS_EXISTING,
|
||||
'message' => $this->l10n->t('There is already a pending registration with this email, a new verification email has been sent to the address.')
|
||||
],
|
||||
Http::STATUS_OK
|
||||
);
|
||||
}
|
||||
|
||||
$data['message'] = $this->l10n->t('Your registration is pending. Please confirm your email address.');
|
||||
$data['status'] = Registration::STATUS_PENDING;
|
||||
$data['registrationStatus'] = self::REGISTRATION_STATUS_PENDING;
|
||||
if($secret !== null) {
|
||||
$data['secret'] = $secret;
|
||||
}
|
||||
return new DataResponse($data, Http::STATUS_OK);
|
||||
} catch (RegistrationException $exception) {
|
||||
throw new OCSException($exception->getMessage());
|
||||
throw new OCSException($exception->getMessage(), $exception->getCode());
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -27,9 +27,6 @@ use OCP\AppFramework\Db\Entity;
|
|||
|
||||
class Registration extends Entity {
|
||||
|
||||
const STATUS_FINISHED = 0;
|
||||
const STATUS_PENDING = 1;
|
||||
|
||||
public $id;
|
||||
protected $email;
|
||||
protected $username;
|
||||
|
|
|
|||
|
|
@ -79,7 +79,6 @@ class MailService {
|
|||
* @throws RegistrationException
|
||||
*/
|
||||
public function sendTokenByMail(Registration $registration) {
|
||||
return true;
|
||||
$link = $this->urlGenerator->linkToRoute('registration.register.verifyToken', array('token' => $registration->getToken()));
|
||||
$link = $this->urlGenerator->getAbsoluteURL($link);
|
||||
$template_var = [
|
||||
|
|
|
|||
|
|
@ -32,9 +32,10 @@ class RegistrationException extends \Exception {
|
|||
*
|
||||
* @param string $message
|
||||
* @param string $hint
|
||||
* @param int $code
|
||||
*/
|
||||
public function __construct($message, $hint = "") {
|
||||
parent::__construct($message);
|
||||
public function __construct($message, $hint = "", $code = 400) {
|
||||
parent::__construct($message, $code);
|
||||
$this->hint = $hint;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -241,7 +241,7 @@ class RegistrationService {
|
|||
try {
|
||||
return $this->registrationMapper->findByToken($token);
|
||||
} catch (DoesNotExistException $exception) {
|
||||
throw new RegistrationException($this->l10n->t('Invalid verification URL. No registration request with this verification URL is found.'));
|
||||
throw new RegistrationException($this->l10n->t('Invalid verification URL. No registration request with this verification URL is found.', 404));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue