Started UserSessionProvider

This commit is contained in:
Stian Thorgersen committed 2014-07-10 16:48:25 +01:00
1 parent 38abcd4a90
commit 86671a2354
106 files changed
+1354 -2368

No files matched your search

@@ -5,7 +5,6 @@ import org.keycloak.models.KeycloakSession;
import org.keycloak.models.ModelProvider;
import org.keycloak.models.RealmModel;
import org.keycloak.models.RoleModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.models.entities.ClientEntity;
import org.keycloak.models.mongo.api.MongoIdentifiableEntity;
import org.keycloak.models.mongo.api.context.MongoStoreInvocationContext;
@@ -32,7 +31,7 @@ public abstract class ClientAdapter<T extends MongoIdentifiableEntity> extends A
this.clientEntity = clientEntity;
this.realm = realm;
this.session = session;
this.model = session.getModel();
this.model = session.model();
}
@Override
@@ -174,16 +173,6 @@ public abstract class ClientAdapter<T extends MongoIdentifiableEntity> extends A
updateMongoEntity();
}
@Override
public Set<UserSessionModel> getUserSessions() {
return model.getUserSessions(realm, this);
}
@Override
public int getActiveUserSessions() {
return model.getActiveUserSessions(realm, this);
}
@Override
public Set<RoleModel> getScopeMappings() {
Set<RoleModel> result = new HashSet<RoleModel>();
@@ -325,138 +325,138 @@ public class MongoModelProvider implements ModelProvider {
return new OAuthClientAdapter(session, realm, clientEntity, invocationContext);
}
//
// @Override
// public UsernameLoginFailureModel getUserLoginFailure(String username, RealmModel realm) {
// DBObject query = new QueryBuilder()
// .and("username").is(username)
// .and("realmId").is(realm.getId())
// .get();
// MongoUsernameLoginFailureEntity user = getMongoStore().loadSingleEntity(MongoUsernameLoginFailureEntity.class, query, invocationContext);
//
// if (user == null) {
// return null;
// } else {
// return new UsernameLoginFailureAdapter(invocationContext, user);
// }
// }
//
// @Override
// public UsernameLoginFailureModel addUserLoginFailure(String username, RealmModel realm) {
// UsernameLoginFailureModel userLoginFailure = getUserLoginFailure(username, realm);
// if (userLoginFailure != null) {
// return userLoginFailure;
// }
//
// MongoUsernameLoginFailureEntity userEntity = new MongoUsernameLoginFailureEntity();
// userEntity.setUsername(username);
// userEntity.setRealmId(realm.getId());
//
// getMongoStore().insertEntity(userEntity, invocationContext);
// return new UsernameLoginFailureAdapter(invocationContext, userEntity);
// }
//
// @Override
// public List<UsernameLoginFailureModel> getAllUserLoginFailures(RealmModel realm) {
// DBObject query = new QueryBuilder()
// .and("realmId").is(realm.getId())
// .get();
// List<MongoUsernameLoginFailureEntity> failures = getMongoStore().loadEntities(MongoUsernameLoginFailureEntity.class, query, invocationContext);
//
// List<UsernameLoginFailureModel> result = new ArrayList<UsernameLoginFailureModel>();
//
// if (failures == null) return result;
// for (MongoUsernameLoginFailureEntity failure : failures) {
// result.add(new UsernameLoginFailureAdapter(invocationContext, failure));
// }
//
// return result;
// }
@Override
public UsernameLoginFailureModel getUserLoginFailure(String username, RealmModel realm) {
DBObject query = new QueryBuilder()
.and("username").is(username)
.and("realmId").is(realm.getId())
.get();
MongoUsernameLoginFailureEntity user = getMongoStore().loadSingleEntity(MongoUsernameLoginFailureEntity.class, query, invocationContext);
if (user == null) {
return null;
} else {
return new UsernameLoginFailureAdapter(invocationContext, user);
}
}
@Override
public UsernameLoginFailureModel addUserLoginFailure(String username, RealmModel realm) {
UsernameLoginFailureModel userLoginFailure = getUserLoginFailure(username, realm);
if (userLoginFailure != null) {
return userLoginFailure;
}
MongoUsernameLoginFailureEntity userEntity = new MongoUsernameLoginFailureEntity();
userEntity.setUsername(username);
userEntity.setRealmId(realm.getId());
getMongoStore().insertEntity(userEntity, invocationContext);
return new UsernameLoginFailureAdapter(invocationContext, userEntity);
}
@Override
public List<UsernameLoginFailureModel> getAllUserLoginFailures(RealmModel realm) {
DBObject query = new QueryBuilder()
.and("realmId").is(realm.getId())
.get();
List<MongoUsernameLoginFailureEntity> failures = getMongoStore().loadEntities(MongoUsernameLoginFailureEntity.class, query, invocationContext);
List<UsernameLoginFailureModel> result = new ArrayList<UsernameLoginFailureModel>();
if (failures == null) return result;
for (MongoUsernameLoginFailureEntity failure : failures) {
result.add(new UsernameLoginFailureAdapter(invocationContext, failure));
}
return result;
}
@Override
public UserSessionModel createUserSession(RealmModel realm, UserModel user, String ipAddress) {
MongoUserSessionEntity entity = new MongoUserSessionEntity();
entity.setRealmId(realm.getId());
entity.setUser(user.getId());
entity.setIpAddress(ipAddress);
int currentTime = Time.currentTime();
entity.setStarted(currentTime);
entity.setLastSessionRefresh(currentTime);
getMongoStore().insertEntity(entity, invocationContext);
return new UserSessionAdapter(entity, realm, invocationContext);
}
@Override
public UserSessionModel getUserSession(String id, RealmModel realm) {
MongoUserSessionEntity entity = getMongoStore().loadEntity(MongoUserSessionEntity.class, id, invocationContext);
if (entity == null) {
return null;
} else {
return new UserSessionAdapter(entity, realm, invocationContext);
}
}
@Override
public List<UserSessionModel> getUserSessions(UserModel user, RealmModel realm) {
DBObject query = new BasicDBObject("user", user.getId());
List<UserSessionModel> sessions = new LinkedList<UserSessionModel>();
for (MongoUserSessionEntity e : getMongoStore().loadEntities(MongoUserSessionEntity.class, query, invocationContext)) {
sessions.add(new UserSessionAdapter(e, realm, invocationContext));
}
return sessions;
}
@Override
public Set<UserSessionModel> getUserSessions(RealmModel realm, ClientModel client) {
DBObject query = new QueryBuilder()
.and("associatedClientIds").is(client.getId())
.get();
List<MongoUserSessionEntity> sessions = getMongoStore().loadEntities(MongoUserSessionEntity.class, query, invocationContext);
Set<UserSessionModel> result = new HashSet<UserSessionModel>();
for (MongoUserSessionEntity session : sessions) {
result.add(new UserSessionAdapter(session, realm, invocationContext));
}
return result;
}
@Override
public int getActiveUserSessions(RealmModel realm, ClientModel client) {
return getUserSessions(realm, client).size();
}
@Override
public void removeUserSession(UserSessionModel session) {
getMongoStore().removeEntity(((UserSessionAdapter) session).getMongoEntity(), invocationContext);
}
@Override
public void removeUserSessions(RealmModel realm, UserModel user) {
DBObject query = new BasicDBObject("user", user.getId());
getMongoStore().removeEntities(MongoUserSessionEntity.class, query, invocationContext);
}
@Override
public void removeUserSessions(RealmModel realm) {
DBObject query = new BasicDBObject("realmId", realm.getId());
getMongoStore().removeEntities(MongoUserSessionEntity.class, query, invocationContext);
}
@Override
public void removeExpiredUserSessions(RealmModel realm) {
int currentTime = Time.currentTime();
DBObject query = new QueryBuilder()
.and("started").lessThan(currentTime - realm.getSsoSessionMaxLifespan())
.get();
getMongoStore().removeEntities(MongoUserSessionEntity.class, query, invocationContext);
query = new QueryBuilder()
.and("lastSessionRefresh").lessThan(currentTime - realm.getSsoSessionIdleTimeout())
.get();
getMongoStore().removeEntities(MongoUserSessionEntity.class, query, invocationContext);
}
// @Override
// public UserSessionModel createUserSession(RealmModel realm, UserModel user, String ipAddress) {
// MongoUserSessionEntity entity = new MongoUserSessionEntity();
// entity.setRealmId(realm.getId());
// entity.setUser(user.getId());
// entity.setIpAddress(ipAddress);
//
// int currentTime = Time.currentTime();
//
// entity.setStarted(currentTime);
// entity.setLastSessionRefresh(currentTime);
//
// getMongoStore().insertEntity(entity, invocationContext);
// return new UserSessionAdapter(entity, realm, invocationContext);
// }
//
// @Override
// public UserSessionModel getUserSession(String id, RealmModel realm) {
// MongoUserSessionEntity entity = getMongoStore().loadEntity(MongoUserSessionEntity.class, id, invocationContext);
// if (entity == null) {
// return null;
// } else {
// return new UserSessionAdapter(entity, realm, invocationContext);
// }
// }
//
// @Override
// public List<UserSessionModel> getUserSessions(UserModel user, RealmModel realm) {
// DBObject query = new BasicDBObject("user", user.getId());
// List<UserSessionModel> sessions = new LinkedList<UserSessionModel>();
// for (MongoUserSessionEntity e : getMongoStore().loadEntities(MongoUserSessionEntity.class, query, invocationContext)) {
// sessions.add(new UserSessionAdapter(e, realm, invocationContext));
// }
// return sessions;
// }
//
// @Override
// public Set<UserSessionModel> getUserSessions(RealmModel realm, ClientModel client) {
// DBObject query = new QueryBuilder()
// .and("associatedClientIds").is(client.getId())
// .get();
// List<MongoUserSessionEntity> sessions = getMongoStore().loadEntities(MongoUserSessionEntity.class, query, invocationContext);
//
// Set<UserSessionModel> result = new HashSet<UserSessionModel>();
// for (MongoUserSessionEntity session : sessions) {
// result.add(new UserSessionAdapter(session, realm, invocationContext));
// }
// return result;
// }
//
// @Override
// public int getActiveUserSessions(RealmModel realm, ClientModel client) {
// return getUserSessions(realm, client).size();
// }
//
// @Override
// public void removeUserSession(UserSessionModel session) {
// getMongoStore().removeEntity(((UserSessionAdapter) session).getMongoEntity(), invocationContext);
// }
//
// @Override
// public void removeUserSessions(RealmModel realm, UserModel user) {
// DBObject query = new BasicDBObject("user", user.getId());
// getMongoStore().removeEntities(MongoUserSessionEntity.class, query, invocationContext);
// }
//
// @Override
// public void removeUserSessions(RealmModel realm) {
// DBObject query = new BasicDBObject("realmId", realm.getId());
// getMongoStore().removeEntities(MongoUserSessionEntity.class, query, invocationContext);
// }
//
// @Override
// public void removeExpiredUserSessions(RealmModel realm) {
// int currentTime = Time.currentTime();
// DBObject query = new QueryBuilder()
// .and("started").lessThan(currentTime - realm.getSsoSessionMaxLifespan())
// .get();
//
// getMongoStore().removeEntities(MongoUserSessionEntity.class, query, invocationContext);
// query = new QueryBuilder()
// .and("lastSessionRefresh").lessThan(currentTime - realm.getSsoSessionIdleTimeout())
// .get();
//
// getMongoStore().removeEntities(MongoUserSessionEntity.class, query, invocationContext);
// }
}
@@ -18,7 +18,6 @@ import org.keycloak.models.SocialLinkModel;
import org.keycloak.models.UserCredentialModel;
import org.keycloak.models.UserCredentialValueModel;
import org.keycloak.models.UserModel;
import org.keycloak.models.UserSessionModel;
import org.keycloak.models.UsernameLoginFailureModel;
import org.keycloak.models.entities.AuthenticationProviderEntity;
import org.keycloak.models.entities.RequiredCredentialEntity;
@@ -63,7 +62,7 @@ public class RealmAdapter extends AbstractMongoAdapter<MongoRealmEntity> impleme
super(invocationContext);
this.realm = realmEntity;
this.session = session;
this.model = session.getModel();
this.model = session.model();
}
@Override
@@ -445,22 +444,6 @@ public class RealmAdapter extends AbstractMongoAdapter<MongoRealmEntity> impleme
return model.getUserByUsername(name, this);
}
@Override
public UsernameLoginFailureModel getUserLoginFailure(String name) {
return model.getUserLoginFailure(name, this);
}
@Override
public UsernameLoginFailureModel addUserLoginFailure(String username) {
return model.addUserLoginFailure(username, this);
}
@Override
public List<UsernameLoginFailureModel> getAllUserLoginFailures() {
return model.getAllUserLoginFailures(this);
}
@Override
public UserModel getUserByEmail(String email) {
return model.getUserByEmail(email, this);
@@ -1013,41 +996,6 @@ public class RealmAdapter extends AbstractMongoAdapter<MongoRealmEntity> impleme
return realm;
}
@Override
public UserSessionModel createUserSession(UserModel user, String ipAddress) {
return model.createUserSession(this, user, ipAddress);
}
@Override
public UserSessionModel getUserSession(String id) {
return model.getUserSession(id, this);
}
@Override
public List<UserSessionModel> getUserSessions(UserModel user) {
return model.getUserSessions(user, this);
}
@Override
public void removeUserSession(UserSessionModel session) {
this.model.removeUserSession(session);
}
@Override
public void removeUserSessions(UserModel user) {
this.model.removeUserSessions(this, user);
}
@Override
public void removeUserSessions() {
this.model.removeUserSessions(this);
}
@Override
public void removeExpiredUserSessions() {
this.model.removeExpiredUserSessions(this);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;