Package org.beangle.webapp.security.action

Source Code of org.beangle.webapp.security.action.ResourceAction

/* Copyright c 2005-2012.
* Licensed under GNU  LESSER General Public License, Version 3.
* http://www.gnu.org/licenses
*/
package org.beangle.webapp.security.action;

import java.util.Collections;
import java.util.List;

import org.beangle.commons.lang.SeqStrUtils;
import org.beangle.model.Entity;
import org.beangle.model.query.builder.OqlBuilder;
import org.beangle.security.blueprint.Authority;
import org.beangle.security.blueprint.Menu;
import org.beangle.security.blueprint.Resource;
import org.beangle.security.blueprint.UserCategory;
import org.beangle.security.blueprint.restrict.RestrictObject;
import org.beangle.security.blueprint.service.CacheableAuthorityManager;
import org.beangle.struts2.convention.route.Action;

/**
* 系统模块管理响应类
*
* @author chaostone 2005-10-9
*/
public class ResourceAction extends SecurityActionSupport {

  private CacheableAuthorityManager authorityManager;

  /**
   * 禁用或激活一个或多个模块
   *
   * @param mapping
   * @param form
   * @param request
   * @param response
   * @return
   */
  public String activate() {
    Long[] resourceIds = SeqStrUtils.transformToLong(get("resourceIds"));
    Boolean enabled = getBoolean("enabled");
    if (null == enabled) {
      enabled = Boolean.FALSE;
    }
    authorityService.updateState(resourceIds, enabled.booleanValue());
    authorityManager.refreshCache();
    return redirect("search", "info.save.success");
  }

  @Override
  public String index() throws Exception {
    return forward(new Action(this, "search"));
  }

  protected void editSetting(Entity<?> entity) {
    Resource resource = (Resource) entity;
    List<RestrictObject> objects = entityDao.getAll(RestrictObject.class);
    objects.removeAll(resource.getObjects());
    put("restrictObjects", objects);
    put("categories", entityDao.getAll(UserCategory.class));
  }

  protected String saveAndForward(Entity<?> entity) {
    Resource resource = (Resource) entity;
    if (null != resource) {
      if (entityDao.duplicate(Resource.class, resource.getId(), "name", resource.getName())) { return redirect(
          "edit", "error.notUnique"); }
    }

    Long[] patternIds = SeqStrUtils.transformToLong(get("restrictObjectIds"));
    List<RestrictObject> objects = Collections.emptyList();
    if (null != patternIds) {
      objects = entityDao.get(RestrictObject.class, patternIds);
    }
    resource.getObjects().clear();
    resource.getObjects().addAll(objects);

    String categoryIds = get("categoryIds");
    List<UserCategory> categories = entityDao.get(UserCategory.class,
        SeqStrUtils.transformToLong(categoryIds));
    resource.getCategories().clear();
    resource.getCategories().addAll(categories);

    entityDao.saveOrUpdate(resource);
    authorityManager.refreshCache();

    logger.info("save resource success {}", resource.getTitle());
    return redirect("search", "info.save.success");
  }

  public String info() {
    Long entityId = getEntityId(getShortName());
    Entity<?> entity = getModel(entityName, entityId);
    OqlBuilder<Menu> query = OqlBuilder.from(Menu.class, "menu");
    query.join("menu.resources", "r").where("r.id=:resourceId", entity.getEntityId())
        .orderBy("menu.profile.id,menu.code");

    OqlBuilder<Authority> groupQuery = OqlBuilder.from(Authority.class, "auth");
    groupQuery.where("auth.resource=:resource", entity).select("auth.group");

    OqlBuilder<?> userQuery = OqlBuilder
        .hql("select distinct u from User u join u.groups g,Authority a where g=a.group and a.resource=:resource");
    userQuery.param("resource", entity);

    put(getShortName(), entity);
    put("users", entityDao.search(userQuery));
    put("groups", entityDao.search(groupQuery));
    put("menus", entityDao.search(query));
    put("categories", entityDao.getAll(UserCategory.class));
    return forward();
  }

  public void setAuthorityManager(CacheableAuthorityManager authorityManager) {
    this.authorityManager = authorityManager;
  }

}
TOP

Related Classes of org.beangle.webapp.security.action.ResourceAction

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.