Package org.beangle.ems.security.action

Source Code of org.beangle.ems.security.action.RestrictionAction

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

import org.beangle.ems.security.helper.RestrictionHelper;
import org.beangle.ems.security.service.UserDataResolver;
import org.beangle.ems.web.action.SecurityActionSupport;

public class RestrictionAction extends SecurityActionSupport {
  protected UserDataResolver idDataResolver;

  public String tip() {
    return forward();
  }

  /**
   * 删除数据限制权限
   */
//  public String remove() {
//    Restriction restriction = getRestriction();
//    RestrictionHolder holer = new RestrictionHelper(entityDao).getHolder();
//    holer.getRestrictions().remove(restriction);
//    entityDao.remove(restriction);
//    entityDao.saveOrUpdate(holer);
//    return redirect("info", "info.remove.success");
//  }

  /**
   * 查看限制资源界面
   */
  public String info() {
    RestrictionHelper helper = new RestrictionHelper(entityDao);
    helper.setRestrictionService(restrictionService);
    helper.populateInfo(helper.getHolder());
    return forward();
  }

//  public String save() {
//    Restriction restriction = getRestriction();
//    RestrictionHolder holder = new RestrictionHelper(entityDao).getHolder();
//    List<Restriction> myRestrictions = getMyRestrictions(restriction.getPattern(), holder);
//    Set<RestrictField> ignoreFields = getIgnoreFields(myRestrictions);
//    boolean isAdmin = isAdmin();
//    for (final RestrictField field : restriction.getPattern().getEntity().getFields()) {
//      String[] values = (String[]) getAll(field.getName());
//      if ((ignoreFields.contains(field) || isAdmin) && getBool("ignoreField" + field.getId())) {
//        restriction.setItem(field, "*");
//      } else {
//        if (null == values || values.length == 0) {
//          restriction.getItems().remove(field.getId());
//        } else {
//          String storedValue = null;
//          if (null != field.getKeyName()) {
//            final Set<String> keys = CollectUtils.newHashSet(values);
//            Collection<?> allValues = restrictionService.getFieldValues(field.getName());
//            allValues = CollectionUtils.select(allValues, new Predicate() {
//              public boolean evaluate(Object arg0) {
//                try {
//                  String keyValue = String.valueOf(PropertyUtils.getProperty(arg0,
//                      field.getKeyName()));
//                  return keys.contains(keyValue);
//                } catch (Exception e) {
//                  e.printStackTrace();
//                }
//                return false;
//              }
//            });
//            storedValue = idDataResolver.marshal(field, allValues);
//          } else {
//            storedValue = StrUtils.join(values);
//          }
//          restriction.setItem(field, storedValue);
//        }
//      }
//    }
//    if (restriction.getItems().isEmpty()) {
//      holder.getRestrictions().remove(restriction);
//      if (restriction.isPersisted()) entityDao.remove(restriction);
//      entityDao.saveOrUpdate(holder);
//      return redirect("info", "info.save.success");
//    } else {
//      if (!restriction.isPersisted()) {
//        holder.getRestrictions().add(restriction);
//        entityDao.saveOrUpdate(holder);
//      } else {
//        entityDao.saveOrUpdate(
//            (String) RestrictionHelper.restrictionTypeMap.get(get("restrictionType")),
//            restriction);
//      }
//      return redirect("info", "info.save.success");
//    }
//  }
//
//  /**
//   * 编辑权限<br>
//   */
//  public String edit() {
//    // 取得各参数的值
//    Restriction restriction = getRestriction();
//    boolean isAdmin = isAdmin();
//    Map<String, Object> mngFields = CollectUtils.newHashMap();
//    Map<String, Object> aoFields = CollectUtils.newHashMap();
//    List<Restriction> myRestricitons = getMyRestrictions(restriction.getPattern(),
//        restriction.getHolder());
//    Set<RestrictField> ignores = getIgnoreFields(myRestricitons);
//    put("ignoreFields", ignores);
//    Set<RestrictField> holderIgnoreFields = CollectUtils.newHashSet();
//    put("holderIgnoreFields", holderIgnoreFields);
//    for (RestrictField field : restriction.getPattern().getEntity().getFields()) {
//      List<?> mngField = restrictionService.getFieldValues(field.getName());
//      if (!isAdmin) {
//        mngField.retainAll(getMyRestrictionValues(myRestricitons, field.getName()));
//      } else {
//        ignores.add(field);
//      }
//      String fieldValue = restriction.getItem(field);
//      if ("*".equals(fieldValue)) {
//        holderIgnoreFields.add(field);
//      }
//      mngFields.put(field.getName(), mngField);
//      if (null == field.getSource()) {
//        aoFields.put(field.getName(), fieldValue);
//      } else {
//        aoFields.put(field.getName(), restrictionService.getFieldValue(field, restriction));
//      }
//    }
//    put("mngFields", mngFields);
//    put("aoFields", aoFields);
//    put("restriction", restriction);
//    return forward();
//  }
//
//  private List<Restriction> getMyRestrictions(RestrictPattern pattern,
//      RestrictionHolder<? extends Restriction> holder) {
//    String type = get("restrictionType");
//    List<Restriction> restrictions = CollectUtils.newArrayList();
//    User me = entityDao.get(User.class, getUserId());
//    if (type.equals("user")) {
//      restrictions = CollectUtils.newArrayList(((RestrictionHolder<?>) me).getRestrictions());
//    } else if (type.equals("group")) {
//      for (GroupMember member : me.getMembers()) {
//        if (member.isMember()) restrictions.addAll(member.getGroup().getRestrictions());
//      }
//    } else if (type.equals("authority")) {
//      Object aa = holder;
//      restrictions = restrictionService.getAuthorityRestrictions(me, ((Authority) aa).getResource());
//    }
//    List<Restriction> rt = CollectUtils.newArrayList();
//    for (Restriction restriction : restrictions) {
//      if (!restriction.getPattern().equals(pattern)) {
//        continue;
//      }
//      rt.add(restriction);
//    }
//    return rt;
//  }
//
//  private Set<RestrictField> getIgnoreFields(List<Restriction> restrictions) {
//    Set<RestrictField> ignores = CollectUtils.newHashSet();
//    for (Restriction restriction : restrictions) {
//      for (RestrictField field : restriction.getPattern().getEntity().getFields()) {
//        String value = restriction.getItem(field);
//        if ("*".equals(value)) ignores.add(field);
//      }
//    }
//    return ignores;
//  }
//
//  private List<Object> getMyRestrictionValues(List<Restriction> restrictions, String name) {
//    List<Object> values = CollectUtils.newArrayList();
//    for (Restriction restriction : restrictions) {
//      RestrictField field = restriction.getPattern().getEntity().getField(name);
//      if (null != field) {
//        String value = restriction.getItem(field);
//        if (null != value) {
//          if (field.isMultiple()) {
//            values.addAll((Collection<?>) restrictionService.getFieldValue(field, restriction));
//          } else {
//            values.add(restrictionService.getFieldValue(field, restriction));
//          }
//        }
//      }
//    }
//    return values;
//  }
//
//  private Restriction getRestriction() {
//    Long restrictionId = getLong("restriction.id");
//    Restriction restriction = null;
//    String entityName = (String) RestrictionHelper.restrictionTypeMap.get(get("restrictionType"));
//    if (null == restrictionId) {
//      restriction = (Restriction) Model.getEntityType(entityName).newInstance();
//    } else {
//      restriction = (Restriction) entityDao.get(entityName, restrictionId);
//    }
//    populate(Params.sub("restriction"), restriction, entityName);
//    if (null == restrictionId) {
//      restriction.setPattern((RestrictPattern) entityDao.get(RestrictPattern.class, restriction
//          .getPattern().getId()));
//    }
//    return restriction;
//  }

  public void setIdDataResolver(UserDataResolver idDataResolver) {
    this.idDataResolver = idDataResolver;
  }

}
TOP

Related Classes of org.beangle.ems.security.action.RestrictionAction

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.