keycloak-aplcache
Changes
examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/BasePropertiesFederationFactory.java 10(+4 -6)
examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/BasePropertiesFederationProvider.java 19(+12 -7)
examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/ClasspathPropertiesFederationFactory.java 10(+10 -0)
examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/FilePropertiesFederationFactory.java 12(+12 -0)
examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/WritableUserModelProxy.java 7(+3 -4)
testsuite/integration/pom.xml 5(+5 -0)
Details
diff --git a/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/BasePropertiesFederationFactory.java b/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/BasePropertiesFederationFactory.java
index 4548c67..057ce50 100755
--- a/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/BasePropertiesFederationFactory.java
+++ b/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/BasePropertiesFederationFactory.java
@@ -36,21 +36,19 @@ public abstract class BasePropertiesFederationFactory implements UserFederationP
props = new Properties();
- InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
- if (is == null) {
- throw new IllegalStateException("Path attribute not configured for provider");
-
- }
+ InputStream is = getPropertiesFileStream(path);
try {
props.load(is);
is.close();
} catch (IOException e) {
throw new RuntimeException(e);
}
- props.put(path, props);
+ files.put(path, props);
return createProvider(session, model, props);
}
+ protected abstract InputStream getPropertiesFileStream(String path);
+
protected abstract BasePropertiesFederationProvider createProvider(KeycloakSession session, UserFederationProviderModel model, Properties props);
diff --git a/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/BasePropertiesFederationProvider.java b/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/BasePropertiesFederationProvider.java
index 39b4d2c..6a8460e 100755
--- a/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/BasePropertiesFederationProvider.java
+++ b/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/BasePropertiesFederationProvider.java
@@ -59,7 +59,8 @@ public abstract class BasePropertiesFederationProvider implements UserFederation
String password = properties.getProperty(username);
if (password != null) {
UserModel userModel = session.userStorage().addUser(realm, username);
- userModel.updateCredential(UserCredentialModel.password(password));
+ userModel.setEnabled(true);
+ userModel.setFederationLink(model.getId());
return userModel;
}
return null;
@@ -72,12 +73,16 @@ public abstract class BasePropertiesFederationProvider implements UserFederation
@Override
public List<UserModel> searchByAttributes(Map<String, String> attributes, RealmModel realm, int maxResults) {
- if (attributes.containsKey(USERNAME)) {
- UserModel user = getUserByUsername(realm, attributes.get(USERNAME));
- if (user != null) {
- List<UserModel> list = new ArrayList<UserModel>(1);
- list.add(user);
- return list;
+ String username = attributes.get(USERNAME);
+ if (username != null) {
+ // make sure user isn't already in storage
+ if (session.userStorage().getUserByUsername(username, realm) == null) {
+ UserModel user = getUserByUsername(realm, username);
+ if (user != null) {
+ List<UserModel> list = new ArrayList<UserModel>(1);
+ list.add(user);
+ return list;
+ }
}
}
return Collections.emptyList();
diff --git a/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/ClasspathPropertiesFederationFactory.java b/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/ClasspathPropertiesFederationFactory.java
index 4b65685..3144c33 100755
--- a/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/ClasspathPropertiesFederationFactory.java
+++ b/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/ClasspathPropertiesFederationFactory.java
@@ -26,6 +26,16 @@ public class ClasspathPropertiesFederationFactory extends BasePropertiesFederati
return new ClasspathPropertiesFederationProvider(session, model, props);
}
+ protected InputStream getPropertiesFileStream(String path) {
+ InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);
+ if (is == null) {
+ throw new IllegalStateException("Path not found for properties file");
+
+ }
+ return is;
+ }
+
+
@Override
public String getId() {
diff --git a/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/FilePropertiesFederationFactory.java b/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/FilePropertiesFederationFactory.java
index ae39ce6..80906a3 100755
--- a/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/FilePropertiesFederationFactory.java
+++ b/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/FilePropertiesFederationFactory.java
@@ -3,6 +3,9 @@ package org.keycloak.examples.federation.properties;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.UserFederationProviderModel;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.InputStream;
import java.util.Properties;
/**
@@ -15,6 +18,15 @@ public class FilePropertiesFederationFactory extends BasePropertiesFederationFac
protected BasePropertiesFederationProvider createProvider(KeycloakSession session, UserFederationProviderModel model, Properties props) {
return new FilePropertiesFederationProvider(session, props, model);
}
+ protected InputStream getPropertiesFileStream(String path) {
+ try {
+ return new FileInputStream(path);
+ } catch (FileNotFoundException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+
@Override
diff --git a/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/WritableUserModelProxy.java b/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/WritableUserModelProxy.java
index 5230c18..300f292 100755
--- a/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/WritableUserModelProxy.java
+++ b/examples/providers/federation-provider/src/main/java/org/keycloak/examples/federation/properties/WritableUserModelProxy.java
@@ -51,16 +51,15 @@ public class WritableUserModelProxy extends UserModelDelegate {
@Override
public void updateCredential(UserCredentialModel cred) {
if (cred.getType().equals(UserCredentialModel.PASSWORD)) {
-
- } else {
- super.updateCredential(cred);
synchronized (provider.getProperties()) {
if (!provider.getProperties().containsKey(delegate.getUsername())) {
throw new IllegalStateException("no user of that in properties file");
}
- provider.getProperties().put(delegate.getUsername(), cred.getValue());
+ provider.getProperties().setProperty(delegate.getUsername(), cred.getValue());
provider.save();
}
+ } else {
+ super.updateCredential(cred);
}
}
}
diff --git a/examples/providers/federation-provider/src/main/resources/test2-users.properties b/examples/providers/federation-provider/src/main/resources/test2-users.properties
new file mode 100755
index 0000000..6623bcc
--- /dev/null
+++ b/examples/providers/federation-provider/src/main/resources/test2-users.properties
@@ -0,0 +1,3 @@
+#
+#Sun Aug 03 10:52:57 EDT 2014
+belichick=superbowl
diff --git a/examples/providers/federation-provider/src/main/resources/test-users.properties b/examples/providers/federation-provider/src/main/resources/test-users.properties
new file mode 100755
index 0000000..aea1071
--- /dev/null
+++ b/examples/providers/federation-provider/src/main/resources/test-users.properties
@@ -0,0 +1 @@
+tbrady=superbowl
\ No newline at end of file
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/users.js b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/users.js
index 66441dd..02ecbb7 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/users.js
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/js/controllers/users.js
@@ -164,8 +164,8 @@ module.controller('UserListCtrl', function($scope, realm, User) {
}
$scope.searchQuery = function() {
+ console.log("query.search: " + $scope.query.search);
$scope.searchLoaded = false;
- $scope.currentSearch = $scope.search;
$scope.users = User.query($scope.query, function() {
$scope.searchLoaded = true;
diff --git a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-list.html b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-list.html
index 8f1a5d0..aa1356e 100755
--- a/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-list.html
+++ b/forms/common-themes/src/main/resources/theme/admin/base/resources/partials/user-list.html
@@ -24,7 +24,7 @@
Icon: search
</button>
</div>
- <span><span>or</span><button class="kc-link" ng-click="search = null; searchQuery()">View all users</button></span>
+ <span><span>or</span><button class="kc-link" ng-click="query.search = null; searchQuery()">View all users</button></span>
<div class="pull-right">
<a class="btn btn-primary" href="#/create/user/{{realm.realm}}">Add User</a>
</div>
diff --git a/services/src/main/java/org/keycloak/services/resources/AccountService.java b/services/src/main/java/org/keycloak/services/resources/AccountService.java
index b02ff59..17147fb 100755
--- a/services/src/main/java/org/keycloak/services/resources/AccountService.java
+++ b/services/src/main/java/org/keycloak/services/resources/AccountService.java
@@ -473,6 +473,7 @@ public class AccountService {
try {
session.users().updateCredential(realm, user, UserCredentialModel.password(passwordNew));
} catch (Exception ape) {
+ logger.error("Failed to update password", ape);
return account.setError(ape.getMessage()).createResponse(AccountPages.PASSWORD);
}
testsuite/integration/pom.xml 5(+5 -0)
diff --git a/testsuite/integration/pom.xml b/testsuite/integration/pom.xml
index 5ca079e..8b3e58c 100755
--- a/testsuite/integration/pom.xml
+++ b/testsuite/integration/pom.xml
@@ -125,6 +125,11 @@
<version>${project.version}</version>
</dependency>
<dependency>
+ <groupId>org.keycloak</groupId>
+ <artifactId>federation-properties-example</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
<groupId>org.jboss.logging</groupId>
<artifactId>jboss-logging</artifactId>
</dependency>