Merge pull request #86 from Kingsrook/feature/CE-1123-expose-access-lo-data-in

CE-1123 Add valuesForFrontend to session; pass them to frontend in ma…
This commit is contained in:
tim-chamberlain
2024-04-17 09:18:07 -05:00
committed by GitHub
2 changed files with 66 additions and 2 deletions

View File

@ -28,6 +28,7 @@ import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
@ -52,9 +53,16 @@ public class QSession implements Serializable
private Map<String, List<Serializable>> securityKeyValues; private Map<String, List<Serializable>> securityKeyValues;
private Map<String, Serializable> backendVariants; private Map<String, Serializable> backendVariants;
// implementation-specific custom values ///////////////////////////////////////////
// implementation-specific custom values //
///////////////////////////////////////////
private Map<String, String> values; private Map<String, String> values;
/////////////////////////////////////////////
// values meant to be passed to a frontend //
/////////////////////////////////////////////
private Map<String, Serializable> valuesForFrontend;
public static final String VALUE_KEY_USER_TIMEZONE = "UserTimezone"; public static final String VALUE_KEY_USER_TIMEZONE = "UserTimezone";
public static final String VALUE_KEY_USER_TIMEZONE_OFFSET_MINUTES = "UserTimezoneOffsetMinutes"; public static final String VALUE_KEY_USER_TIMEZONE_OFFSET_MINUTES = "UserTimezoneOffsetMinutes";
@ -500,4 +508,49 @@ public class QSession implements Serializable
return (this); return (this);
} }
/*******************************************************************************
** Getter for valuesForFrontend
*******************************************************************************/
public Map<String, Serializable> getValuesForFrontend()
{
return (this.valuesForFrontend);
}
/*******************************************************************************
** Setter for valuesForFrontend
*******************************************************************************/
public void setValuesForFrontend(Map<String, Serializable> valuesForFrontend)
{
this.valuesForFrontend = valuesForFrontend;
}
/*******************************************************************************
** Fluent setter for valuesForFrontend
*******************************************************************************/
public QSession withValuesForFrontend(Map<String, Serializable> valuesForFrontend)
{
this.valuesForFrontend = valuesForFrontend;
return (this);
}
/*******************************************************************************
** Fluent setter for a single valuesForFrontend
*******************************************************************************/
public QSession withValueForFrontend(String key, Serializable value)
{
if(this.valuesForFrontend == null)
{
this.valuesForFrontend = new LinkedHashMap<>();
}
this.valuesForFrontend.put(key, value);
return (this);
}
} }

View File

@ -33,6 +33,7 @@ import java.time.Instant;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Locale; import java.util.Locale;
import java.util.Map; import java.util.Map;
@ -427,7 +428,17 @@ public class QJavalinImplementation
QSession session = authenticationModule.createSession(qInstance, authContext); QSession session = authenticationModule.createSession(qInstance, authContext);
context.cookie(SESSION_UUID_COOKIE_NAME, session.getUuid(), SESSION_COOKIE_AGE); context.cookie(SESSION_UUID_COOKIE_NAME, session.getUuid(), SESSION_COOKIE_AGE);
context.result(JsonUtils.toJson(MapBuilder.of("uuid", session.getUuid())));
Map<String, Serializable> resultMap = new HashMap<>();
resultMap.put("uuid", session.getUuid());
if(session.getValuesForFrontend() != null)
{
LinkedHashMap<String, Serializable> valuesForFrontend = new LinkedHashMap<>(session.getValuesForFrontend());
resultMap.put("values", valuesForFrontend);
}
context.result(JsonUtils.toJson(resultMap));
} }
catch(Exception e) catch(Exception e)
{ {