Skip to content

Commit

Permalink
Made errai security user injectable
Browse files Browse the repository at this point in the history
  • Loading branch information
csadilek committed Aug 22, 2014
1 parent eb06e90 commit f3329eb
Show file tree
Hide file tree
Showing 3 changed files with 84 additions and 0 deletions.
Expand Up @@ -18,6 +18,8 @@

import javax.annotation.PostConstruct;
import javax.enterprise.context.ApplicationScoped;
import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Produces;
import javax.inject.Inject;

import org.jboss.errai.common.client.api.Assert;
Expand Down Expand Up @@ -65,6 +67,12 @@ private void maybeLoadStoredCache() {
}
}
}

@Produces @Dependent
private User produceActiveUser() {
maybeLoadStoredCache();
return activeUser;
}

private void setActiveUser(User user, boolean localStorage) {
logger.debug("Setting active user: " + String.valueOf(user));
Expand Down
@@ -0,0 +1,59 @@
/**
* JBoss, Home of Professional Open Source
* Copyright 2014, Red Hat, Inc. and/or its affiliates, and individual
* contributors by the @authors tag. See the copyright.txt in the
* distribution for a full listing of individual contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
* http://www.apache.org/licenses/LICENSE-2.0
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jboss.errai.security.client.local;

import org.jboss.errai.enterprise.client.cdi.AbstractErraiCDITest;
import org.jboss.errai.enterprise.client.cdi.api.CDI;
import org.jboss.errai.ioc.client.container.IOC;
import org.jboss.errai.security.client.local.api.SecurityContext;
import org.jboss.errai.security.client.local.res.BeanWithInjectedUser;
import org.jboss.errai.security.shared.api.identity.User;
import org.jboss.errai.security.shared.api.identity.UserImpl;


public class InjectableUserIntegrationTest extends AbstractErraiCDITest {

@Override
public String getModuleName() {
return "org.jboss.errai.security.SecurityTest";
}


public void testUserIsInjectable() throws Exception {
asyncTest();

CDI.addPostInitTask(new Runnable() {
@Override
public void run() {
final SecurityContext securityContext = IOC.getBeanManager().lookupBean(SecurityContext.class).getInstance();
final BeanWithInjectedUser bean = IOC.getBeanManager().lookupBean(BeanWithInjectedUser.class).getInstance();

// ensure we're starting with a clean slate
assertEquals(User.ANONYMOUS, securityContext.getCachedUser());
assertEquals(User.ANONYMOUS, bean.getUser());

User su = new UserImpl("su2000");
securityContext.setCachedUser(su);

final BeanWithInjectedUser bean2 = IOC.getBeanManager().lookupBean(BeanWithInjectedUser.class).getInstance();
assertEquals(su, bean2.getUser());
finishTest();
}
});
}

}
@@ -0,0 +1,17 @@
package org.jboss.errai.security.client.local.res;

import javax.enterprise.context.Dependent;
import javax.inject.Inject;

import org.jboss.errai.security.shared.api.identity.User;

@Dependent
public class BeanWithInjectedUser {

@Inject
private User user;

public User getUser() {
return user;
}
}

0 comments on commit f3329eb

Please sign in to comment.