Exemple #1
0
 public function resetPassword($password, $token)
 {
     # Get a new Query Builder
     $Query = \Kanso\Kanso::getInstance()->Database->Builder();
     # Validate the user exists
     $user = $Query->SELECT('*')->FROM('users')->WHERE('kanso_password_key', '=', $token)->ROW();
     if (!$user) {
         return false;
     }
     # Change the users password and remove the key from the database
     $row = [];
     $row['hashed_pass'] = utf8_encode(\Kanso\Security\Encrypt::hash($password));
     $row['kanso_password_key'] = null;
     $update = $Query->UPDATE('users')->SET($row)->WHERE('id', '=', $user['id'])->QUERY();
     if (!$update) {
         return false;
     }
     # Remove the password key from the session
     \Kanso\Kanso::getInstance()->Session->remove('session_kanso_password_key');
     # Reset the user's session
     \Kanso\Kanso::getInstance()->Session->freshSession();
     # Create array of data for email template
     $website = \Kanso\Kanso::getInstance()->Environment['KANSO_WEBSITE_NAME'];
     $emailData = ['name' => $user['name'], 'username' => $user['username'], 'website' => $website];
     # Get the email template
     $msg = \Kanso\Templates\Templater::getTemplate($emailData, 'EmailResetPassword');
     # Send the email
     \Kanso\Utility\Mailer::sendHTMLEmail($user['email'], $website, 'no-reply@' . $website, 'Your password was reset at ' . $website, $msg);
     return true;
 }
Exemple #2
0
<?php

/**
 * Kanso Default Settings
 *
 * When Kanso is first installed or restored to factory settings,
 * the settings in this file are used to setup the default
 * tables in the database as well as populate them with a few 
 * examples.
 */
# Default admin security keys for new user
$keys = ['KANSO_PUBLIC_KEY' => 'jce6sLiexsaWfKrDl8iV3dF4jLzNncCr08Dcm7CoipvlupmK3qrFmNarnKzC8KLe3rOJlZC-4GGUqp2iuZ2MjKKcsqekjeC6lqG1mJbcmsKpmaa-psa_sYbhorWizreEtWd6qJSQsLKnyZ3Cnp6GmpimreG_gp5_1p282r2XxreW73mEu9q_ibmBwXqkhMV76MGdvbmGi32dvNF-eIGEvayfy4_DoLSjpYq_sMzQ3JSpnHXmndfZvoG_sppl5nyyqb23rKdpnpyUudSXsaSp3Jq7jsS9t3a1zZ-SvsOlmM2zgt6kqrppm8PfgZjPoLRl37nLsL7xtdfQloR9sZHAYYmMpry8haei2p7bwcJ9yLer3re5g7t9yKDZu3RnynaRocxyncfItbexf5uYnL_YpIyRibumlYWZzsmN1696hLG5favxzb6ryKrmeni6yJak0JXUmeiZrZTnv7vi6bSBZqilvZ6vfaXhec-agqy1m6Oor92WzdXqlIK5meC8vOazhZKQqoa6eZ_UwpeZjIGKg3_E19WIiru3nLxxhdiYt9SoksSOxJqKp6610Ll8zmWn3d6Ujd6fuZ7gksSW6Mu63KyTZ4V8ks15loeswpGHuGvbnJWnwI7mtd7Aqnuf2aXAu9S6rGOdn5qp0IGwooe9hJmheX19vLuqeY6ixMCrhZmqyZ6vuYiMjMyjns_dtfG7jd9ij-q-wniYsOun4622esXapKKxtH5nmJKsmZZ5lOGYl8Cm2peTsaSFqMi71biVx-CGs67bupBpp3h2pbyns9immpKIfaF8sdDJypOuitu9n2m_2559rdGSkKDFk7GtxajOk5LjmnbJ3bl_17mpgd15t5bG5M3j76eon7WY7J6LparcjrvMe6ya0dHYuqKUqc_qv8ugZKTC1OOLaK54lZ-olXzYoJhyvmaRhcC618exiqLIg5VtxMnLfNTLkqyV2KGZ66LE7JfCvKZ7xr67m76p2GXGrcqkxr3M3cmMb2V9qPCVuGamnYrCuq3Li6_YvHbemNK-xa7K3HjdkLDjqXyyuKqP45aOusqydHiJmoOfn9rPu8mZpp2vsKuYrKm3sXd8oKeajMK1nMWdk62rjMKag6HZkueZn3K7d6PuqMramQ==', "KANSO_PUBLIC_SALT" => 'XdbAYUnLG8ReREhX0KHu2IwkNxQHw2BugM4fHr0nASBrxTpxD72GPy1D6RkDUW7aJbpqDqOdjqFQj4nXcpD1YEF5w0IqWQBF206F'];
# Hashed default admin password
$hashed = \Kanso\Security\Encrypt::hash($this->config['KANSO_OWNER_PASSWORD']);
# Default articles table
$KANSO_DEFAULTS_POSTS_TABLE = ['id' => 'INTEGER | UNSIGNED | PRIMARY KEY | UNIQUE | AUTO INCREMENT', 'created' => 'INTEGER | UNSIGNED', 'modified' => 'INTEGER | UNSIGNED', 'status' => 'VARCHAR(255)', 'type' => 'VARCHAR(255)', 'slug' => 'VARCHAR(255)', 'title' => 'VARCHAR(255)', 'excerpt' => 'TEXT', 'author_id' => 'INTEGER | UNSIGNED', 'category_id' => 'INTEGER | UNSIGNED', 'thumbnail' => 'VARCHAR(255)', 'comments_enabled' => 'BOOLEAN DEFAULT FALSE'];
# Default tags table
$KANSO_DEFAULTS_TAGS_TABLE = ['id' => 'INTEGER | UNSIGNED | PRIMARY KEY | UNIQUE | AUTO INCREMENT', 'name' => 'VARCHAR(255)', 'slug' => 'VARCHAR(255)'];
# Default categories table
$KANSO_DEFAULTS_CATEGORIES_TABLE = ['id' => 'INTEGER | UNSIGNED | PRIMARY KEY | UNIQUE | AUTO INCREMENT', 'name' => 'VARCHAR(255)', 'slug' => 'VARCHAR(255)'];
# Default authors table
$KANSO_DEFAULTS_USERS_TABLE = ['id' => 'INTEGER | UNSIGNED | PRIMARY KEY | UNIQUE | AUTO INCREMENT', 'username' => 'VARCHAR(255)', 'email' => 'VARCHAR(255)', 'hashed_pass' => 'VARCHAR(255)', 'name' => 'VARCHAR(255)', 'slug' => 'VARCHAR(255)', 'facebook' => 'VARCHAR(255)', 'twitter' => 'VARCHAR(255)', 'gplus' => 'VARCHAR(255)', 'thumbnail' => 'VARCHAR(255)', 'role' => 'VARCHAR(255)', 'description' => 'VARCHAR(255)', 'status' => 'VARCHAR(255)', 'email_notifications' => 'BOOLEAN | DEFAULT TRUE', 'KANSO_REGISTER_KEY' => 'VARCHAR(255)', 'KANSO_PASSWORD_KEY' => 'VARCHAR(255)', 'KANSO_PUBLIC_KEY' => 'VARCHAR(255)', 'KANSO_PUBLIC_SALT' => 'VARCHAR(255)', 'KANSO_KEYS_TIME' => 'INTEGER | UNSIGNED'];
# Default comments table
$KANSO_DEFAULTS_COMMENTS_TABLE = ['id' => 'INTEGER | UNSIGNED | PRIMARY KEY | UNIQUE | AUTO INCREMENT', 'parent' => 'INTEGER | UNSIGNED', 'post_id' => 'INTEGER | UNSIGNED', 'date' => 'INTEGER | UNSIGNED', 'type' => 'VARCHAR(255)', 'status' => 'VARCHAR(255)', 'name' => 'VARCHAR(255)', 'email' => 'VARCHAR(255)', 'content' => 'VARCHAR(255)', 'html_content' => 'VARCHAR(255)', 'ip_address' => 'VARCHAR(255)', 'email_reply' => 'BOOLEAN', 'email_thread' => 'BOOLEAN', 'rating' => 'INTEGER | UNSIGNED'];
# Default tags to posts table
$KANSO_DEFAULTS_TAGS_TO_POSTS_TABLE = ['id' => 'INTEGER | UNSIGNED | PRIMARY KEY | UNIQUE | AUTO INCREMENT', 'tag_id' => 'INTEGER | UNSIGNED', 'post_id' => 'INTEGER | UNSIGNED'];
# Default content to articles table
# Note article content is stored seperately from the
# article entry to improve database performance
$KANSO_DEFAULTS_CONTENT_TO_POSTS_TABLE = ['id' => 'INTEGER | UNSIGNED | PRIMARY KEY | UNIQUE | AUTO INCREMENT', 'content' => 'TEXT', 'post_id' => 'INTEGER | UNSIGNED'];
# The default user entry
Exemple #3
0
 /**
  * Update administrator settings
  *
  * This function updates the user's administrator settings.
  * i.e username, email and password.
  *
  * @param  $username       string
  * @param  $email          string
  * @param  $password       string
  * @return string|boolean
  */
 public function updateAccountDetails($username, $email, $password, $emailNotifications = true)
 {
     # Get a new Query Builder
     $Query = \Kanso\Kanso::getInstance()->Database()->Builder();
     # Grab the user's row from the session
     $sessionRow = \Kanso\Kanso::getInstance()->Session->get('KANSO_ADMIN_DATA');
     # Validate that the username/ email doesn't exist already
     # only if the user has changed either value
     if ($email !== $sessionRow['email']) {
         $emailExists = $Query->SELECT('*')->FROM('users')->WHERE('email', '=', $email)->FIND();
         if ($emailExists) {
             return 'email_exists';
         }
     }
     if ($username !== $sessionRow['username']) {
         $usernameExists = $Query->SELECT('*')->FROM('users')->WHERE('username', '=', $username)->FIND();
         if ($usernameExists) {
             return 'username_exists';
         }
     }
     # Grab the user's row from the database
     $userRow = $Query->SELECT('*')->FROM('users')->WHERE('username', '=', $sessionRow['username'])->AND_WHERE('email', '=', $sessionRow['email'])->AND_WHERE('status', '=', 'confirmed')->FIND();
     if (!$userRow || empty($userRow)) {
         return false;
     }
     # Sanitize email notifications
     if ($emailNotifications === 'true' || $emailNotifications === 1 || $emailNotifications === true) {
         $emailNotifications = true;
     } else {
         $emailNotifications = false;
     }
     # Update the username and email
     $row = ['username' => $username, 'email' => $email, 'email_notifications' => $emailNotifications];
     # If they changed their password lets update it
     if ($password !== '' && !empty($password)) {
         $row['hashed_pass'] = utf8_encode(\Kanso\Security\Encrypt::hash($password));
     }
     # Save to the databse and refresh the client's session
     $update = $Query->UPDATE('users')->SET($row)->WHERE('id', '=', $userRow['id'])->QUERY();
     # If updated
     if ($update) {
         # Relog the client in
         \Kanso\Kanso::getInstance()->Session->refresh();
         return "valid";
     }
     return false;
 }