summaryrefslogtreecommitdiff
path: root/classes/authenticator/PasswordTrait.php
diff options
context:
space:
mode:
Diffstat (limited to 'classes/authenticator/PasswordTrait.php')
-rw-r--r--classes/authenticator/PasswordTrait.php40
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;
+ }
+}