62 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						|
 | 
						|
 | 
						|
namespace Documents;
 | 
						|
 | 
						|
use Elements\TemplateDocument;
 | 
						|
use Objects\User;
 | 
						|
 | 
						|
 | 
						|
class Account extends TemplateDocument {
 | 
						|
  public function __construct(User $user, ?string $template) {
 | 
						|
    parent::__construct($user, $template);
 | 
						|
    $this->enableCSP();
 | 
						|
  }
 | 
						|
 | 
						|
  private function createError(string $message) {
 | 
						|
    $this->parameters["view"]["success"] = false;
 | 
						|
    $this->parameters["view"]["message"] = $message;
 | 
						|
  }
 | 
						|
 | 
						|
  protected function loadParameters() {
 | 
						|
    $this->parameters["view"] = ["success" => true];
 | 
						|
    if ($this->getTemplateName() === "account/reset_password.twig") {
 | 
						|
      if (isset($_GET["token"]) && is_string($_GET["token"]) && !empty($_GET["token"])) {
 | 
						|
        $this->parameters["view"]["token"] = $_GET["token"];
 | 
						|
        $req = new \Api\User\CheckToken($this->getUser());
 | 
						|
        $this->parameters["view"]["success"] = $req->execute(array("token" => $_GET["token"]));
 | 
						|
        if ($this->parameters["view"]["success"]) {
 | 
						|
          if (strcmp($req->getResult()["token"]["type"], "password_reset") !== 0) {
 | 
						|
            $this->createError("The given token has a wrong type.");
 | 
						|
          }
 | 
						|
        } else {
 | 
						|
          $this->createError("Error requesting password reset: " . $req->getLastError());
 | 
						|
        }
 | 
						|
      }
 | 
						|
    } else if ($this->getTemplateName() === "account/register.twig") {
 | 
						|
      $settings = $this->user->getConfiguration()->getSettings();
 | 
						|
      if ($this->user->isLoggedIn()) {
 | 
						|
        $this->createError("You are already logged in.");
 | 
						|
      } else if (!$settings->isRegistrationAllowed()) {
 | 
						|
        $this->createError("Registration is not enabled on this website.");
 | 
						|
      }
 | 
						|
    } else if ($this->getTemplateName() === "account/accept_invite.twig") {
 | 
						|
      if (isset($_GET["token"]) && is_string($_GET["token"]) && !empty($_GET["token"])) {
 | 
						|
        $this->parameters["view"]["token"] = $_GET["token"];
 | 
						|
        $req = new \Api\User\CheckToken($this->getUser());
 | 
						|
        $this->parameters["view"]["success"] = $req->execute(array("token" => $_GET["token"]));
 | 
						|
        if ($this->parameters["view"]["success"]) {
 | 
						|
          if (strcmp($req->getResult()["token"]["type"], "invite") !== 0) {
 | 
						|
            $this->createError("The given token has a wrong type.");
 | 
						|
          } else {
 | 
						|
            $this->parameters["view"]["invited_user"] = $req->getResult()["user"];
 | 
						|
          }
 | 
						|
        } else {
 | 
						|
          $this->createError("Error confirming e-mail address: " . $req->getLastError());
 | 
						|
        }
 | 
						|
      } else {
 | 
						|
        $this->createError("The link you visited is no longer valid");
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
} |