Browse Source

Routing Fix + E-Mail Confirm frontend

Roman Hergenreder 3 years ago
parent
commit
db63b55a70

+ 0 - 1
core/Api/Stats.class.php

@@ -2,7 +2,6 @@
 
 namespace Api;
 
-use Driver\SQL\Condition\Compare;
 use Driver\SQL\Condition\CondBool;
 
 class Stats extends Request {

+ 14 - 10
core/Api/UserAPI.class.php

@@ -544,17 +544,21 @@ namespace Api\User {
       $this->success = $req->execute(array("token" => $token));
       $this->lastError = $req->getLastError();
 
-      $result = $req->getResult();
-      if (strcasecmp($result["token"]["type"], "invite") !== 0) {
-        return $this->createError("Invalid token type");
-      } else if($result["user"]["confirmed"]) {
-        return $this->createError("Your email address is already confirmed.");
-      } else if (!$this->updateUser($result["user"]["uid"])) {
-        return false;
-      } else {
-        $this->invalidateToken($token);
-        return true;
+      if ($this->success) {
+        $result = $req->getResult();
+        if (strcasecmp($result["token"]["type"], "email_confirm") !== 0) {
+          return $this->createError("Invalid token type");
+        } else if($result["user"]["confirmed"]) {
+          return $this->createError("Your email address is already confirmed.");
+        } else if (!$this->updateUser($result["user"]["uid"])) {
+          return false;
+        } else {
+          $this->invalidateToken($token);
+          return true;
+        }
       }
+
+      return $this->success;
     }
   }
 

+ 3 - 1
core/Views/Account/AccountView.class.php

@@ -8,17 +8,19 @@ use Elements\View;
 abstract class AccountView extends View {
 
   protected string $description;
+  protected string $icon;
 
   public function __construct(Document $document, $loadView = true) {
     parent::__construct($document, $loadView);
     $this->description = "";
+    $this->icon = "image";
   }
 
   public function getCode() {
     $html = parent::getCode();
 
     $content = $this->getAccountContent();
-    $icon = $this->createIcon("user-plus", "fas", "fa-3x");
+    $icon = $this->createIcon($this->icon, "fas", "fa-3x");
 
     $html .= "<div class=\"container mt-5\">
         <div class=\"row\">

+ 30 - 5
core/Views/Account/ConfirmEmail.class.php

@@ -5,17 +5,42 @@ namespace Views\Account;
 
 
 use Elements\Document;
-use Elements\View;
 
-class ConfirmEmail extends View {
+class ConfirmEmail extends AccountView {
+
+  private bool $success;
+  private string $message;
 
   public function __construct(Document $document, $loadView = true) {
     parent::__construct($document, $loadView);
+    $this->title = "Confirm Email";
+    $this->icon = "user-check";
+    $this->success = false;
+    $this->message = "No content";
   }
 
-  public function getCode() {
-    $html = parent::getCode();
+  public function loadView() {
+    parent::loadView();
+
+    if (isset($_GET["token"]) && is_string($_GET["token"]) && !empty($_GET["token"])) {
+      $req = new \Api\User\ConfirmEmail($this->getDocument()->getUser());
+      $this->success = $req->execute(array("token" => $_GET["token"]));
+      if ($this->success) {
+        $this->message = "Your e-mail address was successfully confirmed, you may now log in";
+      } else {
+        $this->message = "Error confirming e-mail address: " . $req->getLastError();
+      }
+    } else {
+      $this->success = false;
+      $this->message = "The link you visited is no longer valid";
+    }
+  }
 
-    return $html;
+  protected function getAccountContent() {
+    if ($this->success) {
+      return $this->createSuccessText($this->message);
+    } else {
+      return $this->createErrorText($this->message);
+    }
   }
 }

+ 18 - 5
core/Views/Account/Register.class.php

@@ -13,6 +13,7 @@ class Register extends AccountView {
     parent::__construct($document, $loadView);
     $this->title = "Registration";
     $this->description = "Create a new account";
+    $this->icon = "user-plus";
   }
 
   public function loadView() {
@@ -37,19 +38,31 @@ class Register extends AccountView {
 
     return "<h4 class=\"pb-4\">Please fill with your details</h4>
       <form>
-        <div class=\"form-group\">
+        <div class=\"input-group\">
+          <div class=\"input-group-append\">
+            <span class=\"input-group-text\"><i class=\"fas fa-hashtag\"></i></span>  
+          </div>
           <input id=\"username\" name=\"username\" placeholder=\"Username\" class=\"form-control\" type=\"text\" maxlength=\"32\">
         </div>
-        <div class=\"form-group\">
+        <div class=\"input-group mt-3\">
+         <div class=\"input-group-append\">
+            <span class=\"input-group-text\"><i class=\"fas fa-at\"></i></span>
+          </div>
           <input type=\"email\" name='email' id='email' class=\"form-control\" placeholder=\"Email\" maxlength=\"64\">
         </div>
-        <div class=\"form-group\">
+        <div class=\"input-group mt-3\">
+          <div class=\"input-group-append\">
+            <span class=\"input-group-text\"><i class=\"fas fa-key\"></i></span>
+          </div>
           <input type=\"password\" name='password' id='password' class=\"form-control\" placeholder=\"Password\">
         </div>
-        <div class=\"form-group\">
+        <div class=\"input-group mt-3\">
+          <div class=\"input-group-append\">
+            <span class=\"input-group-text\"><i class=\"fas fa-key\"></i></span>
+          </div>
           <input type=\"password\" name='confirmPassword' id='confirmPassword' class=\"form-control\" placeholder=\"Confirm Password\">
         </div>
-        <div class=\"form-group\">
+        <div class=\"input-group mt-3\">
           <button type=\"button\" class=\"btn btn-success\" id='btnRegister'>Submit</button>
         </div>
      </form>";

+ 8 - 0
index.php

@@ -77,6 +77,14 @@ if(isset($_GET["api"]) && is_string($_GET["api"])) {
   }
 } else {
   $requestedUri = $_GET["site"] ?? $_SERVER["REQUEST_URI"];
+  if (($index = strpos($requestedUri, "?")) !== false) {
+    $requestedUri = substr($requestedUri, 0, $index);
+  }
+
+  if (($index = strpos($requestedUri, "#")) !== false) {
+    $requestedUri = substr($requestedUri, 0, $index);
+  }
+
   if (startsWith($requestedUri, "/")) {
     $requestedUri = substr($requestedUri, 1);
   }