<?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