]> git.andy128k.dev Git - ipf.git/commitdiff
cleanup User model
authorAndrey Kutejko <andy128k@gmail.com>
Wed, 20 Aug 2014 21:32:21 +0000 (00:32 +0300)
committerAndrey Kutejko <andy128k@gmail.com>
Wed, 20 Aug 2014 21:32:21 +0000 (00:32 +0300)
ipf/auth/models/User.php
ipf/crypto.php

index ff6536b85a4e85e2354dc1ed01de3bbdc28e21d6..bc854569a3e64fe0949b30f0aac056e7d1c1587a 100644 (file)
@@ -205,7 +205,6 @@ class AdminUser extends IPF_Admin_Model
 
 class User extends BaseUser
 {
-    const UNUSABLE_PASSWORD = '!';
     private $profile = null;
 
     public function __toString()
@@ -216,67 +215,12 @@ class User extends BaseUser
         return $s;
     }
 
-    public function smartName()
-    {
-        $username = $this->username;
-        if ($username===null)
-            return __('Anonymous');
-        $name = $this->first_name.' '.$this->last_name;
-        if (trim($name)=='')
-            return $username;
-        return $name;
-    }
-
-    static function createUser($username, $password=null, $email=null, $first_name=null, $last_name=null, $is_active=false, $is_staff=false, $is_superuser=false)
-    {
-        $user = new User();
-        $user->username = $username;
-
-        if (trim($email)=='')
-            $user->email = null;
-        else
-            $user->email = $email;
-
-        $user->first_name = $first_name;
-        $user->last_name = $last_name;
-        $user->is_active = $is_active;
-        $user->is_staff = $is_staff;
-        $user->is_superuser = $is_superuser;
-
-        if ($password!==null)
-            $user->setPassword($password);
-        else
-            $user->setUnusablePassword();
-
-        $user->save();
-        return $user;
-    }
-
-    function setUnusablePassword()
-    {
-        $this->password = UNUSABLE_PASSWORD;
-    }
-
-    static function SetPassword2($raw_password)
-    {
-        $salt = IPF_Utils::randomString(5);
-        return 'sha1:'.$salt.':'.sha1($salt.$raw_password);
-    }
-    
     function setPassword($raw_password)
     {
-        $this->password = self::SetPassword2($raw_password);
-    }
-
-    function checkPassword($password)
-    {
-        if ( ($this->password=='') || ($this->password==User::UNUSABLE_PASSWORD) )
-            return false;
-        list($algo, $salt, $hash) = explode(':', $this->password);
-        if ($hash == $algo($salt.$password))
-            return true;
+        if ($raw_password)
+            $this->password = IPF_Crypto::hashPassword($raw_password);
         else
-            return false;
+            $this->password = '';
     }
 
     function isAnonymous()
@@ -287,7 +231,7 @@ class User extends BaseUser
     public static function checkCreditentials($username, $password)
     {
         $user = self::table()->findOneByUsername($username);
-        if ($user && $user->is_active && $user->checkPassword($password))
+        if ($user && $user->is_active && IPF_Crypto::checkPassword($password, $user->password))
             return $user;
         else
             return false;
index 6b150a92655adab9b8cc31ea08e270c1acc29f48..7aed01ea57dbcc5f0008e4e1e2581ec0be5592af 100644 (file)
@@ -22,6 +22,20 @@ class IPF_Crypto
         return hash_hmac('sha1', $string, self::get_key());
     }
 
+    public static function hashPassword($rawPassword)
+    {
+        $salt = IPF_Utils::randomString(5);
+        return 'sha1:'.$salt.':'.sha1($salt . $rawPassword);
+    }
+
+    public static function checkPassword($rawPassword, $hashedPassword)
+    {
+        if (!$rawPassword || !$hashedPassword)
+            return false;
+        list($algo, $salt, $hash) = explode(':', $hashedPassword);
+        return $hash === $algo($salt . $rawPassword);
+    }
+
     private static function get_key()
     {
         $secret = self::secretKey();