diff --git a/library/Icinga/Web/Dashboard/Common/DashboardUserManager.php b/library/Icinga/Web/Dashboard/Common/DashboardUserManager.php new file mode 100644 index 000000000..3c3ef4d52 --- /dev/null +++ b/library/Icinga/Web/Dashboard/Common/DashboardUserManager.php @@ -0,0 +1,86 @@ +insert('icingaweb_dashboard_owner', ['username' => self::getUser()->getUsername()]); + + self::getUser()->setAdditional('id', $conn->lastInsertId()); + } + } + + /** + * Set this dashboard's user + * + * @param User $user + * + * @return $this + */ + public function setUser(User $user): self + { + self::$user = $user; + self::initUser(); + + return $this; + } + + /** + * Get this dashboard's user + * + * @return User + */ + public static function getUser(): User + { + if (self::$user === null) { + self::$user = Auth::getInstance()->getUser(); + self::initUser(); + } + + return self::$user; + } + + /** + * Get whether the current user is already in the database + * + * @return bool + */ + public static function userExist(): bool + { + $query = DashboardOwner::on(DBUtils::getConn()) + ->setColumns(['id']) + ->filter(Filter::equal('username', self::getUser()->getUsername())); + + $found = false; + $result = $query->execute(); + if ($result->hasResult()) { + $found = true; + self::getUser()->setAdditional('id', $result->current()->id); + } + + return $found; + } +}