summaryrefslogtreecommitdiffstats
path: root/examples/model/auth.mod.php
diff options
context:
space:
mode:
Diffstat (limited to 'examples/model/auth.mod.php')
-rw-r--r--examples/model/auth.mod.php115
1 files changed, 115 insertions, 0 deletions
diff --git a/examples/model/auth.mod.php b/examples/model/auth.mod.php
new file mode 100644
index 0000000..000db95
--- /dev/null
+++ b/examples/model/auth.mod.php
@@ -0,0 +1,115 @@
+<?php
+
+/*
+ * SCROTT Copyright (C) 2016 Malf Furious
+ *
+ * Scrott is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation, either version 3 of the License,
+ * or (at your option) any later version.
+ *
+ * Scrott is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; even the implied warranty of MERCHANTABILITY
+ * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+ * License for more details.
+ */
+
+require_once "model/common.mod.php";
+require_once "class/user.class.php";
+require_once "class/form.class.php";
+require_once "class/setting.class.php";
+
+class AuthModel extends CommonModel
+{
+ /*
+ * Default action
+ */
+ function deflt()
+ {
+ $userTbl = new User();
+
+ if (count($userTbl->getAllUsers_orderByName()) == 0)
+ {
+ $this->noaccounts = true;
+ $this->activeTab['signup'] = "in active";
+ $this->tabSwap = false;
+ }
+
+ else
+ {
+ $this->activeTab['login'] = "in active";
+ $this->tabSwap = Setting::allowPublicSignup();
+ }
+ }
+
+ /*
+ * Attempt to register a new account
+ */
+ function signup($input)
+ {
+ $userTbl = new User();
+
+ if (!Setting::allowPublicSignup() && count($userTbl->getAllUsers_orderByName()) > 0)
+ {
+ $this->logError("You may not signup at this time");
+ return;
+ }
+
+ $form = new Form();
+ $form->field_text("username");
+ $form->field_text("password", null, false);
+ $form->field_text("cPassword", null, false);
+
+ if (!$form->populate($input))
+ {
+ $this->logFormErrors($form);
+ return;
+ }
+
+ if ($form->password != $form->cPassword)
+ {
+ $this->logError("Passwords do not match");
+ return;
+ }
+
+ $user = new User();
+
+ if (!$user->createNewUser($form->username, $form->password))
+ {
+ $this->logError("Your requested username is already in use");
+ return;
+ }
+
+ $this->setCurrentUser($user);
+ $this->redirectTo($this->ap() . "/");
+ }
+
+ /*
+ * Attempt to login
+ */
+ function login($input)
+ {
+ $form = new Form();
+ $form->field_text("username");
+ $form->field_text("password", null, false);
+
+ if (!$form->populate($input))
+ {
+ $this->logFormErrors($form);
+ return;
+ }
+
+ $user = new User();
+
+ if (!($user->initByUsername($form->username) && $user->validatePassword($form->password)))
+ {
+ $this->logError("Username or password is incorrect");
+ return;
+ }
+
+ $this->setCurrentUser($user);
+ $this->redirectTo($this->ap() . "/");
+ }
+}
+
+?>