/** Datei: plugins/tenants/hooks/model/saved_users.php **/ * @copyright 2025 ARUNOX * @version 1.0.0 * * @hook model::saved->users * @param mixed $result save result * @param string $table Current Database Table Name * @param object $query Database\QueryBuilder Object * * @since 1.0.0 File is created */ use ARUNOX\Core\Auth; use ARUNOX\Plugins\Users; use ARUNOX\Database\QueryBuilder; if( $result === FALSE ) return $result; $user = Users\Model::get( $result ); if( !$user->tenant_id ) return $result; $hash = Auth::createHash( $user->email ); $DBname = "admin"; $table = "tenants_systems_users"; $where = [ "tenant_id" => $user->tenant_id, "system_id" => SYSTEM->id, "user_id" => $user->id, ]; $data = array_merge( $where, [ "hash" => $hash ] ); $exists = QueryBuilder::select( $table ) ->addWhere( $where ) ->using( $DBname ) ->fetch(); // show( $exists, $data, $user ); if( $exists ) $mapping = QueryBuilder::update( $table, $data, $where ); else $mapping = QueryBuilder::insert( $table, $data ); $mapping = $mapping->using( $DBname )->execute(); // show( $result, $mapping, $user ); return $result; /** Datei: plugins/tenants/hooks/model/query.php **/ * @copyright 2025 ARUNOX * @version 1.0.0 * * @hook model::query * @param object $query Database\QueryBuilder Object * @param string $table Current Database Table Name * * @since 1.0.0 File is created */ use ARUNOX\Database; use ARUNOX\Plugins\Users; use ARUNOX\Plugins\Tenants; if( $table == Tenants\Model::getTable() ) return $query->using("admin"); if( $table == Tenants\Systems\Model::getTable() ) return $query->using("admin"); if( in_array( $query->database->getConfig("name"), [ "default", "admin" ] ) ) { return $query; } // show( $query->database->getConfig("name") ); if( Users\Model::isSuperadmin() || !Users\Model::isLoggedIn() ) return $query; if( !SYSTEM->type->isTenantShared() ) return $query; if( !Database::existsTable( "{$query->table}_meta" ) ) return $query; if( Database::columnExists( $query->table, "origin_id" ) ) { $mainTable = $query->table; $mainTable = explode( "_", $mainTable ); $subTable = array_pop( $mainTable ); $mainTable = implode( "_", $mainTable ); $query->addWhere([ "tenant_id__query" => [ "table" => "{$mainTable}_meta", "on" => "{$mainTable}_meta.origin_id = {$query->table}.origin_id", "CONDITIONS" => [ "meta_key" => "tenant_id", "meta_value" => Users\Model::getTenantId(), ] ] ]); return $query; } $query->addWhere([ "tenant_id__meta" => Users\Model::getTenantId() ] ); return $query;