Ir al contenido

DbSessionManager

DbSessionManager es un singleton que gestiona el mapa en memoria de sesiones de usuario activas. Cada sesión se representa mediante un token de tipo string que se asocia a un objeto Authentication de Spring Security. El manager es el punto central para resolver a quién pertenece un token, obtener acceso elevado a nivel de sistema, e inspeccionar las sesiones activas.

Descripción:

Método Valores de retorno Descripción
getSystemToken() String Devuelve el token de administrador para el tenant del usuario actualmente conectado. Pase este token a cualquier método de la API para ejecutar la operación como el super-usuario del sistema en lugar del usuario actual.

Ejemplo:

package com.openkm;
import com.openkm.api.OKMDocument;
import com.openkm.module.db.stuff.DbSessionManager;
import com.openkm.util.ContextWrapper;
public class Test {
public static void main(String[] args) {
try {
OKMDocument okmDocument = ContextWrapper.getContext().getBean(OKMDocument.class);
String systemToken = DbSessionManager.getInstance().getSystemToken();
// Delete is executed as the system super-user
okmDocument.delete(systemToken, "d50133e3-dbfa-4d01-a109-28785cd48f40");
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
getSystemToken(long tenantId) String Devuelve el token de administrador para el ID de tenant indicado. Use esta sobrecarga cuando el tenant no pueda resolverse desde el contexto de seguridad actual (por ejemplo, en hilos en segundo plano).

Ejemplo:

package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
public class Test {
public static void main(String[] args) {
try {
long tenantId = 1L;
String systemToken = DbSessionManager.getInstance().getSystemToken(tenantId);
System.out.println("System token for tenant " + tenantId + ": " + systemToken);
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
getAuthentication(String token) Authentication Devuelve el objeto Authentication de Spring Security asociado al token indicado, o null si el token no existe. También actualiza la marca de tiempo del último acceso de la sesión.

Ejemplo:

package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
import org.springframework.security.core.Authentication;
public class Test {
public static void main(String[] args) {
try {
String token = "some-token";
Authentication auth = DbSessionManager.getInstance().getAuthentication(token);
if (auth != null) {
System.out.println("User: " + auth.getName());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
getUser(String token) String Devuelve el nombre de usuario asociado al token indicado, o null si el token no existe.

Ejemplo:

package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
public class Test {
public static void main(String[] args) {
try {
String token = "some-token";
String user = DbSessionManager.getInstance().getUser(token);
System.out.println("Token belongs to user: " + user);
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
getRoles(String token) Set Devuelve el conjunto de nombres de rol concedidos al usuario asociado al token indicado. Devuelve un conjunto vacío si el token no existe.

Ejemplo:

package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
import java.util.Set;
public class Test {
public static void main(String[] args) {
try {
String token = "some-token";
Set<String> roles = DbSessionManager.getInstance().getRoles(token);
System.out.println("Roles: " + roles);
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
getToken(Authentication auth) String Devuelve la cadena de token asociada al objeto Authentication indicado, o null si no se encuentra ninguna sesión coincidente.

Ejemplo:

package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
public class Test {
public static void main(String[] args) {
try {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String token = DbSessionManager.getInstance().getToken(auth);
System.out.println("Current user token: " + token);
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
getInfo(String token) DbSessionInfo Devuelve el objeto de información de sesión para el token indicado. DbSessionInfo contiene el objeto Authentication, la hora de creación de la sesión y la hora del último acceso.

Ejemplo:

package com.openkm;
import com.openkm.bean.DbSessionInfo;
import com.openkm.module.db.stuff.DbSessionManager;
public class Test {
public static void main(String[] args) {
try {
String token = "some-token";
DbSessionInfo info = DbSessionManager.getInstance().getInfo(token);
if (info != null) {
System.out.println("Created: " + info.getCreation().getTime());
System.out.println("Last access: " + info.getLastAccess().getTime());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
getTokens() List Devuelve una lista de todos los tokens de sesión activos actualmente registrados en el session manager.

Ejemplo:

package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
public class Test {
public static void main(String[] args) {
try {
for (String token : DbSessionManager.getInstance().getTokens()) {
String user = DbSessionManager.getInstance().getUser(token);
System.out.println("Token: " + token + " -> User: " + user);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
add(String token, Authentication auth) void Registra una nueva sesión asociando el token indicado con un objeto Authentication. Las marcas de tiempo de creación y último acceso de la sesión se establecen a la hora actual.

Ejemplo:

package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import java.util.UUID;
public class Test {
public static void main(String[] args) {
try {
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
String token = UUID.randomUUID().toString();
DbSessionManager.getInstance().add(token, auth);
System.out.println("Session registered with token: " + token);
} catch (Exception e) {
e.printStackTrace();
}
}
}

Descripción:

Método Valores de retorno Descripción
remove(String token) void Elimina la sesión asociada al token indicado del session manager.

Ejemplo:

package com.openkm;
import com.openkm.module.db.stuff.DbSessionManager;
public class Test {
public static void main(String[] args) {
try {
String token = "some-token";
DbSessionManager.getInstance().remove(token);
System.out.println("Session removed");
} catch (Exception e) {
e.printStackTrace();
}
}
}