Skip to content

Commit

Permalink
handle page refresh better
Browse files Browse the repository at this point in the history
  • Loading branch information
patriot1burke committed Jun 19, 2015
1 parent 1bce639 commit 84faac0
Show file tree
Hide file tree
Showing 20 changed files with 298 additions and 238 deletions.
Expand Up @@ -32,9 +32,9 @@ public interface ClientSessionModel {
public Set<String> getProtocolMappers();
public void setProtocolMappers(Set<String> protocolMappers);

public Map<String, UserSessionModel.AuthenticatorStatus> getAuthenticators();
public void setAuthenticatorStatus(String authenticator, UserSessionModel.AuthenticatorStatus status);
public void setAuthenticatorStatus(Map<String, UserSessionModel.AuthenticatorStatus> status);
public Map<String, ExecutionStatus> getExecutionStatus();
public void setExecutionStatus(String authenticator, ExecutionStatus status);
public void clearExecutionStatus();
public UserModel getAuthenticatedUser();
public void setAuthenticatedUser(UserModel user);

Expand Down Expand Up @@ -67,6 +67,8 @@ public interface ClientSessionModel {
*/
public Map<String, String> getUserSessionNotes();

public void clearUserSessionNotes();

public static enum Action {
OAUTH_GRANT,
CODE_TO_TOKEN,
Expand All @@ -80,4 +82,12 @@ public static enum Action {
LOGGED_OUT
}

public enum ExecutionStatus {
FAILED,
SUCCESS,
SETUP_REQUIRED,
ATTEMPTED,
SKIPPED,
CHALLENGED
}
}
Expand Up @@ -37,15 +37,6 @@ public interface UserSessionModel {

List<ClientSessionModel> getClientSessions();

public static enum AuthenticatorStatus {
FAILED,
SUCCESS,
SETUP_REQUIRED,
ATTEMPTED,
SKIPPED,
CHALLENGED
}

public String getNote(String name);
public void setNote(String name, String value);
public void removeNote(String name);
Expand Down
Expand Up @@ -185,23 +185,32 @@ public Map<String, String> getUserSessionNotes() {
return copy;
}

@Override
public void clearUserSessionNotes() {
entity.setUserSessionNotes(new HashMap<String, String>());
update();

}

void update() {
provider.getTx().replace(cache, entity.getId(), entity);
}
@Override
public Map<String, UserSessionModel.AuthenticatorStatus> getAuthenticators() {
public Map<String, ExecutionStatus> getExecutionStatus() {
return entity.getAuthenticatorStatus();
}

@Override
public void setAuthenticatorStatus(String authenticator, UserSessionModel.AuthenticatorStatus status) {
public void setExecutionStatus(String authenticator, ExecutionStatus status) {
entity.getAuthenticatorStatus().put(authenticator, status);
update();

}

@Override
public void setAuthenticatorStatus(Map<String, UserSessionModel.AuthenticatorStatus> status) {
entity.setAuthenticatorStatus(status);
public void clearExecutionStatus() {
entity.getAuthenticatorStatus().clear();
update();
}

@Override
Expand All @@ -211,6 +220,7 @@ public UserModel getAuthenticatedUser() {
@Override
public void setAuthenticatedUser(UserModel user) {
entity.setAuthUserId(user.getId());
update();

}

Expand Down
@@ -1,7 +1,6 @@
package org.keycloak.models.sessions.infinispan.entities;

import org.keycloak.models.ClientSessionModel;
import org.keycloak.models.UserSessionModel;

import java.util.HashMap;
import java.util.Map;
Expand Down Expand Up @@ -30,7 +29,7 @@ public class ClientSessionEntity extends SessionEntity {
private Set<String> protocolMappers;
private Map<String, String> notes;
private Map<String, String> userSessionNotes;
private Map<String, UserSessionModel.AuthenticatorStatus> authenticatorStatus = new HashMap<>();
private Map<String, ClientSessionModel.ExecutionStatus> authenticatorStatus = new HashMap<>();
private String authUserId;

public String getClient() {
Expand Down Expand Up @@ -113,11 +112,11 @@ public void setNotes(Map<String, String> notes) {
this.notes = notes;
}

public Map<String, UserSessionModel.AuthenticatorStatus> getAuthenticatorStatus() {
public Map<String, ClientSessionModel.ExecutionStatus> getAuthenticatorStatus() {
return authenticatorStatus;
}

public void setAuthenticatorStatus(Map<String, UserSessionModel.AuthenticatorStatus> authenticatorStatus) {
public void setAuthenticatorStatus(Map<String, ClientSessionModel.ExecutionStatus> authenticatorStatus) {
this.authenticatorStatus = authenticatorStatus;
}

Expand Down
Expand Up @@ -6,6 +6,7 @@
import org.keycloak.models.RealmModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.models.sessions.jpa.entities.ClientSessionAuthStatusEntity;
import org.keycloak.models.sessions.jpa.entities.ClientSessionEntity;
import org.keycloak.models.sessions.jpa.entities.ClientSessionNoteEntity;
import org.keycloak.models.sessions.jpa.entities.ClientSessionProtocolMapperEntity;
Expand Down Expand Up @@ -106,6 +107,17 @@ public Map<String, String> getUserSessionNotes() {
return copy;
}

@Override
public void clearUserSessionNotes() {
Iterator<ClientUserSessionNoteEntity> it = entity.getUserSessionNotes().iterator();
while (it.hasNext()) {
ClientUserSessionNoteEntity attr = it.next();
it.remove();
em.remove(attr);
}

}

@Override
public String getId() {
return entity.getId();
Expand Down Expand Up @@ -242,27 +254,44 @@ public void setProtocolMappers(Set<String> protocolMappers) {
}

@Override
public Map<String, UserSessionModel.AuthenticatorStatus> getAuthenticators() {
return null;
public Map<String, ExecutionStatus> getExecutionStatus() {
Map<String, ExecutionStatus> result = new HashMap<>();
for (ClientSessionAuthStatusEntity status : entity.getAuthanticatorStatus()) {
result.put(status.getAuthenticator(), status.getStatus());
}
return result;
}

@Override
public void setAuthenticatorStatus(String authenticator, UserSessionModel.AuthenticatorStatus status) {
public void setExecutionStatus(String authenticator, ExecutionStatus status) {
ClientSessionAuthStatusEntity authStatus = new ClientSessionAuthStatusEntity();
authStatus.setAuthenticator(authenticator);
authStatus.setClientSession(entity);
authStatus.setStatus(status);
em.persist(authStatus);
entity.getAuthanticatorStatus().add(authStatus);
em.flush();


}

@Override
public void setAuthenticatorStatus(Map<String, UserSessionModel.AuthenticatorStatus> status) {

public void clearExecutionStatus() {
Iterator<ClientSessionAuthStatusEntity> iterator = entity.getAuthanticatorStatus().iterator();
while (iterator.hasNext()) {
ClientSessionAuthStatusEntity authStatus = iterator.next();
iterator.remove();
em.remove(authStatus);
}
}

@Override
public UserModel getAuthenticatedUser() {
return null;
return session.users().getUserById(entity.getUserId(), realm);
}

@Override
public void setAuthenticatedUser(UserModel user) {

entity.setUserId(user.getId());
}
}
@@ -1,6 +1,6 @@
package org.keycloak.models.sessions.jpa.entities;

import org.keycloak.models.UserSessionModel;
import org.keycloak.models.ClientSessionModel;

import javax.persistence.Column;
import javax.persistence.Entity;
Expand Down Expand Up @@ -39,7 +39,7 @@ public class ClientSessionAuthStatusEntity {
@Column(name = "AUTHENTICATOR")
protected String authenticator;
@Column(name = "STATUS")
protected UserSessionModel.AuthenticatorStatus status;
protected ClientSessionModel.ExecutionStatus status;

public String getAuthenticator() {
return authenticator;
Expand All @@ -49,11 +49,11 @@ public void setAuthenticator(String authenticator) {
this.authenticator = authenticator;
}

public UserSessionModel.AuthenticatorStatus getStatus() {
public ClientSessionModel.ExecutionStatus getStatus() {
return status;
}

public void setStatus(UserSessionModel.AuthenticatorStatus status) {
public void setStatus(ClientSessionModel.ExecutionStatus status) {
this.status = status;
}

Expand Down
Expand Up @@ -155,19 +155,24 @@ public void setAuthMethod(String method) {
}

@Override
public Map<String, UserSessionModel.AuthenticatorStatus> getAuthenticators() {
public Map<String, ExecutionStatus> getExecutionStatus() {
return entity.getAuthenticatorStatus();
}

@Override
public void setAuthenticatorStatus(String authenticator, UserSessionModel.AuthenticatorStatus status) {
public void setExecutionStatus(String authenticator, ExecutionStatus status) {
entity.getAuthenticatorStatus().put(authenticator, status);

}

@Override
public void setAuthenticatorStatus(Map<String, UserSessionModel.AuthenticatorStatus> status) {
entity.setAuthenticatorStatus(status);
public void clearExecutionStatus() {
entity.getAuthenticatorStatus().clear();
}

@Override
public void clearUserSessionNotes() {
entity.getUserSessionNotes().clear();
}

@Override
Expand Down
@@ -1,7 +1,6 @@
package org.keycloak.models.sessions.mem.entities;

import org.keycloak.models.ClientSessionModel;
import org.keycloak.models.UserSessionModel;

import java.util.HashMap;
import java.util.Map;
Expand All @@ -15,7 +14,7 @@ public class ClientSessionEntity {
private String id;
private String clientId;
private String realmId;
private Map<String, UserSessionModel.AuthenticatorStatus> authenticatorStatus = new HashMap<>();
private Map<String, ClientSessionModel.ExecutionStatus> authenticatorStatus = new HashMap<>();
private String authUserId;

private UserSessionEntity session;
Expand Down Expand Up @@ -122,11 +121,11 @@ public void setAuthUserId(String authUserId) {
this.authUserId = authUserId;
}

public Map<String, UserSessionModel.AuthenticatorStatus> getAuthenticatorStatus() {
public Map<String, ClientSessionModel.ExecutionStatus> getAuthenticatorStatus() {
return authenticatorStatus;
}

public void setAuthenticatorStatus(Map<String, UserSessionModel.AuthenticatorStatus> authenticatorStatus) {
public void setAuthenticatorStatus(Map<String, ClientSessionModel.ExecutionStatus> authenticatorStatus) {
this.authenticatorStatus = authenticatorStatus;
}

Expand Down
Expand Up @@ -171,22 +171,26 @@ public Map<String, String> getUserSessionNotes() {
}

@Override
public Map<String, UserSessionModel.AuthenticatorStatus> getAuthenticators() {
public Map<String, ExecutionStatus> getExecutionStatus() {
return entity.getAuthenticatorStatus();
}

@Override
public void setAuthenticatorStatus(String authenticator, UserSessionModel.AuthenticatorStatus status) {
public void setExecutionStatus(String authenticator, ExecutionStatus status) {
entity.getAuthenticatorStatus().put(authenticator, status);
updateMongoEntity();

}

@Override
public void setAuthenticatorStatus(Map<String, UserSessionModel.AuthenticatorStatus> status) {
entity.setAuthenticatorStatus(status);
public void clearExecutionStatus() {
entity.getAuthenticatorStatus().clear();
updateMongoEntity();
}

@Override
public void clearUserSessionNotes() {
entity.getUserSessionNotes().clear();
}

@Override
Expand Down
Expand Up @@ -4,7 +4,6 @@
import org.keycloak.connections.mongo.api.MongoIdentifiableEntity;
import org.keycloak.connections.mongo.api.context.MongoStoreInvocationContext;
import org.keycloak.models.ClientSessionModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.models.entities.AbstractIdentifiableEntity;

import java.util.HashMap;
Expand All @@ -31,7 +30,7 @@ public class MongoClientSessionEntity extends AbstractIdentifiableEntity impleme
private List<String> protocolMappers;
private Map<String, String> notes = new HashMap<String, String>();
private Map<String, String> userSessionNotes = new HashMap<String, String>();
private Map<String, UserSessionModel.AuthenticatorStatus> authenticatorStatus = new HashMap<>();
private Map<String, ClientSessionModel.ExecutionStatus> authenticatorStatus = new HashMap<>();
private String authUserId;

public String getId() {
Expand Down Expand Up @@ -130,11 +129,11 @@ public void setSessionId(String sessionId) {
this.sessionId = sessionId;
}

public Map<String, UserSessionModel.AuthenticatorStatus> getAuthenticatorStatus() {
public Map<String, ClientSessionModel.ExecutionStatus> getAuthenticatorStatus() {
return authenticatorStatus;
}

public void setAuthenticatorStatus(Map<String, UserSessionModel.AuthenticatorStatus> authenticatorStatus) {
public void setAuthenticatorStatus(Map<String, ClientSessionModel.ExecutionStatus> authenticatorStatus) {
this.authenticatorStatus = authenticatorStatus;
}

Expand Down

0 comments on commit 84faac0

Please sign in to comment.