public function handle($data)
 {
     $profile = UserBackend::fetch_user_profile($this->params['id']);
     $groups = [];
     /** @var \meteor\data\profiles\GroupProfile $group */
     foreach (UserBackend::fetch_user_groups($profile) as $group) {
         $groups[] = $group->toExternalForm();
     }
     return ["groups" => $groups];
 }
 public function handle_get($data)
 {
     $profile = UserBackend::fetch_user_profile($this->params["id"]);
     $data = [];
     $data["profile"] = $profile->toExternalForm();
     $data["settings"] = UserBackend::fetch_user_settings($profile);
     $data["permissions"] = UserBackend::fetch_user_permissions($profile);
     $groups = [];
     /** @var GroupProfile $group */
     foreach (UserBackend::fetch_user_groups($profile) as $group) {
         $groups[] = $group->toExternalForm();
     }
     $data["groups"] = $groups;
     return $data;
 }
 public static function check_user_permission(UserProfile $profile, $permission)
 {
     $query = Database::generate_query("user_permission_check", [$profile->getUserId()->toString(), $permission]);
     $result = $query->execute();
     $count = $result->count();
     $result->close();
     if ($count >= 1) {
         return true;
     }
     foreach (UserBackend::fetch_user_groups($profile) as $group) {
         if (GroupBackend::check_group_permission($group, $permission)) {
             return true;
         }
     }
     return false;
 }