/** Datei: plugins/tenants/hooks/router/dispatch-after_users.php **/ * @copyright 2025 ARUNOX * @version 1.0.0 * @since 1.0.0 File is created */ use ARUNOX\Core\Hooks; use ARUNOX\Plugins\REST; use ARUNOX\Plugins\Users; Hooks::add('router::dispatch->after->patch.users.{id}.status', function( $result, $route, $id ) { if( !REST\Response::hasUpdater() ) return $result; $response = REST\Response::response(); $user = Users\Model::get( $id ); $referer = $route["request"]->getReferer("path"); if( !$user ) return $result; if( !preg_match( "/^tenants/", $referer ) ) return $result; foreach( $response as &$item ) { if( $item->type !== "updater" ) continue; $uuid = base64_decode( $item->updater ); $uuid = explode( ":", $uuid ); if( $uuid[1] != "/api/v1/users" ) continue; $uuid[1] = "/api/v1/tenants/{$user->tenant_id}/users"; $uuid = implode( ":", $uuid ); $uuid = base64_encode( $uuid ); $item->updater = $uuid; break; } return $response; }); Hooks::add('router::dispatch->after->delete.users.{id}', function( $result, $route, $id ) { if( !REST\Response::hasRoute() ) return $result; $response = REST\Response::response(); $user = Users\Model::get( $id ); $referer = $route["request"]->getReferer("path"); if( !$user ) return $result; if( !preg_match( "/^tenants/", $referer ) ) return $result; foreach( $response as &$item ) { if( $item->type !== "route" ) continue; $item->route = "/tenants/{$user->tenant_id}#users"; } return $response; }); /** Datei: plugins/tenants/hooks/router/dispatch-before_login.php **/ * @copyright 2025 ARUNOX * @version 1.0.0 * * @hook router::dispatch->before->post.login * @param mixed $route current route data * @param object $request current request data * * @since 1.0.0 File is created */ use ARUNOX\Core\Auth; use ARUNOX\Plugins\REST; use ARUNOX\Plugins\Users; use ARUNOX\Database\QueryBuilder; if( !SYSTEM->type->isTenantIsolated() ) return; $post = $request->getBodyParams(); $hash = Auth::createHash( $post["email"] ); $DBname = "admin"; $data = QueryBuilder::select("tenants_systems_users") ->addWhere([ "system_id" => SYSTEM->id, "hash" => $hash, ]) ->using( $DBname ) ->fetch(); // show( $data, "X" ); if( !$data ) { REST\Response::addNotify( "danger", "NO SYSTEM/USER FOUND" ); REST\Response::setTemplate( "login" ); REST\Response::jsonResponse( 401 )->send(); } // show( $post, $hash, $data, "X" ); $data = QueryBuilder::select("tenants_systems") ->addWhere([ "system_id" => SYSTEM->id, "tenant_id" => $data->tenant_id, ]) ->using( $DBname ) ->fetch(); if( !$data ) { REST\Response::addNotify( "danger", "NO SYSTEM/TENANT FOUND" ); REST\Response::setTemplate( "login" ); REST\Response::jsonResponse( 401 )->send(); } if( !$data->db_name ) { REST\Response::addNotify( "danger", "NO DATABASE FOUND" ); REST\Response::setTemplate( "login" ); REST\Response::jsonResponse( 401 )->send(); } SYSTEM->setDBName( $data->db_name ); SYSTEM->connect(); return $route;