diff options
Diffstat (limited to 'classes/authenticator/PasswordTrait.php')
| -rw-r--r-- | classes/authenticator/PasswordTrait.php | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/classes/authenticator/PasswordTrait.php b/classes/authenticator/PasswordTrait.php new file mode 100644 index 0000000..22976d8 --- /dev/null +++ b/classes/authenticator/PasswordTrait.php @@ -0,0 +1,40 @@ +<?php + + +// namespace DevCoder\Authentication\Core; +// +// use DevCoder\Authentication\UserInterface; + +/** + * Trait PasswordTrait + * @package DevCoder\Authentication\Core + */ +trait PasswordTrait +{ + private $cost = 10; + + public function cryptPassword(string $plainPassword): string + { + return password_hash( + $plainPassword, + PASSWORD_BCRYPT, + ['cost' => $this->cost] + ); + } + + public function isPasswordValid(UserInterface $user, string $plainPassword): bool + { + return password_verify( + $plainPassword, + $user->getPassword() + ); + } + + public function setCost(int $cost): void + { + if ($cost < 4 || $cost > 12) { + throw new \InvalidArgumentException('Cost must be in the range of 4-31.'); + } + $this->cost = $cost; + } +} |
