]> git.mxchange.org Git - friendica.git/commitdiff
Add User::authenticate()
authorHypolite Petovan <mrpetovan@gmail.com>
Sun, 26 Nov 2017 19:25:25 +0000 (14:25 -0500)
committerHypolite Petovan <mrpetovan@gmail.com>
Sun, 26 Nov 2017 19:25:25 +0000 (14:25 -0500)
src/Model/User.php

index 01bcce28d9cf2c6ce046d038da5c03225004250f..a7f59b6a3d0a2bd4bc5aec32a6343c39c0ce4b1e 100644 (file)
@@ -1,22 +1,71 @@
 <?php
+
 /**
  * @file src/Model/User.php
  * @brief This file includes the User class with user related database functions
  */
+
 namespace Friendica\Model;
 
 use Friendica\Core\System;
 use Friendica\Core\Worker;
+use Friendica\Database\DBM;
 use dba;
 
 require_once 'boot.php';
-require_once 'plugin.php';
+require_once 'include/plugin.php';
 
 /**
  * @brief This class handles User related functions
  */
 class User
 {
+       public static function authenticate($user_info, $password)
+       {
+               if (is_object($user_info)) {
+                       $user = (array) $user_info;
+               } elseif (is_int($user_info)) {
+                       $user = dba::select('user',
+                               ['uid', 'password'],
+                               [
+                                       'uid' => $user_info,
+                                       'blocked' => 0,
+                                       'account_expired' => 0,
+                                       'account_removed' => 0,
+                                       'verified' => 1
+                               ],
+                               ['limit' => 1]
+                       );
+               } elseif (is_string($user_info)) {
+                       $user = dba::fetch_first('SELECT `uid`, `password`
+                               FROM `user`
+                               WHERE (`email` = ? OR `username` = ? OR `nickname` = ?)
+                               AND `blocked` = 0
+                               AND `account_expired` = 0
+                               AND `account_removed` = 0
+                               AND `verified` = 1
+                               LIMIT 1',
+                               $user_info,
+                               $user_info,
+                               $user_info
+                       );
+               } else {
+                       $user = $user_info;
+               }
+
+               if (!DBM::isResult($user) || !isset($user['uid']) || !isset($user['password'])) {
+                       return false;
+               }
+
+               $password_hashed = hash('whirlpool', $password);
+
+               if ($password_hashed !== $user['password']) {
+                       return false;
+               }
+
+               return $user['uid'];
+       }
+
        /**
         * @param object $uid user to remove
         * @return void