Package org.jboss.errai.security.client.local

Source Code of org.jboss.errai.security.client.local.Identity

package org.jboss.errai.security.client.local;

import com.google.gwt.user.client.Cookies;
import com.google.gwt.user.client.rpc.AsyncCallback;

import org.jboss.errai.bus.client.api.BusErrorCallback;
import org.jboss.errai.bus.client.api.base.MessageBuilder;
import org.jboss.errai.common.client.api.RemoteCallback;
import org.jboss.errai.databinding.client.api.Bindable;
import org.jboss.errai.ioc.client.container.IOC;
import org.jboss.errai.security.shared.AuthenticationService;
import org.jboss.errai.security.shared.Role;
import org.jboss.errai.security.shared.User;
import org.jboss.errai.ui.nav.client.local.Navigation;
import org.jboss.errai.ui.shared.api.style.StyleBindingsRegistry;

import javax.enterprise.context.SessionScoped;

import java.io.Serializable;
import java.util.List;

import static org.jboss.errai.ui.nav.client.local.api.LoginPage.CURRENT_PAGE_COOKIE;

/**
* Identity holds the username and password and performs the authentication tasks.
*
* @author edewit@redhat.com
*/
@Bindable
@SessionScoped
public class Identity implements Serializable {
  private String username;
  private String password;

  public void login(final RemoteCallback<User> callback, BusErrorCallback errorCallback) {
    MessageBuilder.createCall(new RemoteCallback<User>() {
      @Override
      public void callback(User user) {
        StyleBindingsRegistry.get().updateStyles();
        final String page = Cookies.getCookie(CURRENT_PAGE_COOKIE);
        if (page != null) {
          Cookies.removeCookie(CURRENT_PAGE_COOKIE);
          IOC.getBeanManager().lookupBean(Navigation.class).getInstance().goTo(page);
        }
        if (callback != null) {
          callback.callback(user);
        }
      }
    }, errorCallback, AuthenticationService.class).login(username, password);
  }

  public void logout() {
    MessageBuilder.createCall(new VoidRemoteCallback(), AuthenticationService.class).logout();
    StyleBindingsRegistry.get().updateStyles();
  }

  public void getUser(final AsyncCallback<User> callback) {
    MessageBuilder.createCall(new RemoteCallback<User>() {
      @Override
      public void callback(User response) {
        callback.onSuccess(response);
      }
    }, AuthenticationService.class).getUser();
  }

  public void hasPermission(final AsyncCallback<Boolean> callback, final String... roleNames) {
    MessageBuilder.createCall(new RemoteCallback<List<Role>>() {
      @Override
      public void callback(List<Role> roles) {
        for (String roleName : roleNames) {
          final Role role = new Role(roleName);
          if (!roles.contains(role)) {
            callback.onSuccess(false);
            return;
          }
        }
        callback.onSuccess(true);
      }
    }, AuthenticationService.class).getRoles();
  }

  public String getUsername() {
    return username;
  }

  public void setUsername(String username) {
    this.username = username;
  }

  public String getPassword() {
    return password;
  }

  public void setPassword(String password) {
    this.password = password;
  }

  private static class VoidRemoteCallback implements RemoteCallback<Void> {
    @Override
    public void callback(final Void response) {
    }
  }
}
TOP

Related Classes of org.jboss.errai.security.client.local.Identity

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.