 1ac0f42a58
			
		
	
	1ac0f42a58
	
	
	
		
			
			Travis config update Removed HHVM script as Laravel no longer support HHVM after releasing 5.3
		
			
				
	
	
		
			88 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			88 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| namespace Illuminate\Hashing;
 | |
| 
 | |
| use RuntimeException;
 | |
| use Illuminate\Contracts\Hashing\Hasher as HasherContract;
 | |
| 
 | |
| class BcryptHasher extends AbstractHasher implements HasherContract
 | |
| {
 | |
|     /**
 | |
|      * The default cost factor.
 | |
|      *
 | |
|      * @var int
 | |
|      */
 | |
|     protected $rounds = 10;
 | |
| 
 | |
|     /**
 | |
|      * Create a new hasher instance.
 | |
|      *
 | |
|      * @param  array  $options
 | |
|      * @return void
 | |
|      */
 | |
|     public function __construct(array $options = [])
 | |
|     {
 | |
|         $this->rounds = $options['rounds'] ?? $this->rounds;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Hash the given value.
 | |
|      *
 | |
|      * @param  string  $value
 | |
|      * @param  array   $options
 | |
|      * @return string
 | |
|      *
 | |
|      * @throws \RuntimeException
 | |
|      */
 | |
|     public function make($value, array $options = [])
 | |
|     {
 | |
|         $hash = password_hash($value, PASSWORD_BCRYPT, [
 | |
|             'cost' => $this->cost($options),
 | |
|         ]);
 | |
| 
 | |
|         if ($hash === false) {
 | |
|             throw new RuntimeException('Bcrypt hashing not supported.');
 | |
|         }
 | |
| 
 | |
|         return $hash;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Check if the given hash has been hashed using the given options.
 | |
|      *
 | |
|      * @param  string  $hashedValue
 | |
|      * @param  array   $options
 | |
|      * @return bool
 | |
|      */
 | |
|     public function needsRehash($hashedValue, array $options = [])
 | |
|     {
 | |
|         return password_needs_rehash($hashedValue, PASSWORD_BCRYPT, [
 | |
|             'cost' => $this->cost($options),
 | |
|         ]);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Set the default password work factor.
 | |
|      *
 | |
|      * @param  int  $rounds
 | |
|      * @return $this
 | |
|      */
 | |
|     public function setRounds($rounds)
 | |
|     {
 | |
|         $this->rounds = (int) $rounds;
 | |
| 
 | |
|         return $this;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * Extract the cost value from the options array.
 | |
|      *
 | |
|      * @param  array  $options
 | |
|      * @return int
 | |
|      */
 | |
|     protected function cost(array $options = [])
 | |
|     {
 | |
|         return $options['rounds'] ?? $this->rounds;
 | |
|     }
 | |
| }
 |