diff --git a/src/Model/BaseModel.php b/src/Model/BaseModel.php new file mode 100644 index 0000000..48713f7 --- /dev/null +++ b/src/Model/BaseModel.php @@ -0,0 +1,49 @@ + $value) { + $method = 'set' . str_replace('_', '', ucwords($key, '_')); + + if (method_exists($this, $method)) { + $this->$method($value); + } + } + } + + public function setId($id): void + { + $this->id = $id; + } + + public function getId() + { + return $this->id; + } + + function toArray(): array + { + $array = []; + + foreach (self::getFields() as $key) { + $method = 'get' . str_replace('_', '', ucwords($key, '_')); + + if (method_exists($this, $method)) { + $array[$key] = $this->$method(); + } + } + + return $array; + } +} diff --git a/src/Model/User.php b/src/Model/User.php new file mode 100644 index 0000000..cdc34dd --- /dev/null +++ b/src/Model/User.php @@ -0,0 +1,70 @@ +email = $email; + } + + public function setPassword(string $hashedPassword): void + { + $this->password = $hashedPassword; + } + + public function setPlainPassword(string $plainPassword): void + { + $this->password = password_hash($plainPassword, PASSWORD_BCRYPT); + } + + public function setType(string $type): void + { + if (in_array($type, self::$types)) { + $this->type = $type; + } + } + + public function getEmail(): string + { + return $this->email; + } + + public function getPassword(): string + { + return $this->password; + } + + public function getType(): string + { + return $this->type; + } + + public function hasPermission(int $permission): bool + { + switch ($permission) { + case IUser::PERMISSION_NORMAL: + return true; + break; + case IUser::PERMISSION_ADMIN: + return $this->type === 'admin'; + break; + } + } + + public function checkPassword(string $password): bool + { + return password_verify($password, $this->password); + } +}