コード例 #1
0
  /**
   * Retrieves whole application object from DB (authz in parent methods)
   *
   * @param sess PerunSession for Authz and to resolve User
   * @param vo VO to get application for
   * @param group Group
   * @return application object / null if not exists
   */
  private Application getLatestApplication(
      PerunSession sess, Vo vo, Group group, Application.AppType type) {
    try {

      if (sess.getPerunPrincipal().getUser() != null) {

        if (group != null) {

          return jdbc.queryForObject(
              RegistrarManagerImpl.APP_SELECT
                  + " where a.id=(select max(id) from application where vo_id=? and group_id=? and apptype=? and user_id=? )",
              RegistrarManagerImpl.APP_MAPPER,
              vo.getId(),
              group.getId(),
              String.valueOf(type),
              sess.getPerunPrincipal().getUserId());

        } else {

          return jdbc.queryForObject(
              RegistrarManagerImpl.APP_SELECT
                  + " where a.id=(select max(id) from application where vo_id=? and apptype=? and user_id=? )",
              RegistrarManagerImpl.APP_MAPPER,
              vo.getId(),
              String.valueOf(type),
              sess.getPerunPrincipal().getUserId());
        }

      } else {

        if (group != null) {

          return jdbc.queryForObject(
              RegistrarManagerImpl.APP_SELECT
                  + " where a.id=(select max(id) from application where vo_id=? and group_id=? and apptype=? and created_by=? and extsourcename=? )",
              RegistrarManagerImpl.APP_MAPPER,
              vo.getId(),
              group.getId(),
              String.valueOf(type),
              sess.getPerunPrincipal().getActor(),
              sess.getPerunPrincipal().getExtSourceName());

        } else {

          return jdbc.queryForObject(
              RegistrarManagerImpl.APP_SELECT
                  + " where a.id=(select max(id) from application where vo_id=? and apptype=? and created_by=? and extsourcename=? )",
              RegistrarManagerImpl.APP_MAPPER,
              vo.getId(),
              String.valueOf(type),
              sess.getPerunPrincipal().getActor(),
              sess.getPerunPrincipal().getExtSourceName());
        }
      }

    } catch (EmptyResultDataAccessException ex) {
      return null;
    }
  }
コード例 #2
0
ファイル: AuditParser.java プロジェクト: papperwing/perun
 private static Vo createVo(Map<String, String> beanAttr) {
   if (beanAttr == null) return null;
   Vo vo = new Vo();
   vo.setId(Integer.valueOf(beanAttr.get("id")).intValue());
   vo.setName(BeansUtils.eraseEscaping(beanAttr.get("name")));
   vo.setShortName(BeansUtils.eraseEscaping(beanAttr.get("shortName")));
   return vo;
 }
コード例 #3
0
ファイル: GroupsManagerImpl.java プロジェクト: Holdo/perun
 public int getGroupsCount(PerunSession sess, Vo vo) throws InternalErrorException {
   try {
     return jdbc.queryForInt("select count(1) from groups where vo_id=?", vo.getId());
   } catch (RuntimeException ex) {
     throw new InternalErrorException(ex);
   }
 }
コード例 #4
0
ファイル: GroupsManagerImpl.java プロジェクト: Holdo/perun
 public Group getGroupByName(PerunSession sess, Vo vo, String name)
     throws GroupNotExistsException, InternalErrorException {
   try {
     return jdbc.queryForObject(
         "select "
             + groupMappingSelectQuery
             + " from groups where groups.name=? and groups.vo_id=?",
         GROUP_MAPPER,
         name,
         vo.getId());
   } catch (EmptyResultDataAccessException err) {
     throw new GroupNotExistsException("Group name=" + name + ", vo id=" + vo.getId());
   } catch (RuntimeException err) {
     throw new InternalErrorException(err);
   }
 }
コード例 #5
0
ファイル: LdapConnectorImpl.java プロジェクト: dsarman/perun
 public void deleteVo(Vo vo) throws InternalErrorException {
   try {
     ldapTemplate.unbind(getVoDNByVoId(String.valueOf(vo.getId())));
     log.debug("Entry deleted from LDAP: Vo {}.", vo);
   } catch (NameNotFoundException e) {
     throw new InternalErrorException(e);
   }
 }
コード例 #6
0
ファイル: GroupsManagerImpl.java プロジェクト: Holdo/perun
 public List<Group> getAllGroups(PerunSession sess, Vo vo) throws InternalErrorException {
   try {
     return jdbc.query(
         "select " + groupMappingSelectQuery + " from groups where vo_id=?",
         GROUP_MAPPER,
         vo.getId());
   } catch (RuntimeException ex) {
     throw new InternalErrorException(ex);
   }
 }
コード例 #7
0
  public Vo updateVo(PerunSession sess, Vo vo)
      throws VoNotExistsException, InternalErrorException, PrivilegeException {
    Utils.notNull(sess, "sess");
    vosManagerBl.checkVoExists(sess, vo);

    // Authorization - Vo admin required
    if (!AuthzResolver.isAuthorized(sess, Role.VOADMIN, vo)) {
      throw new PrivilegeException(sess, "updateVo");
    }

    if (vo.getName().length() > 128) {
      throw new InternalErrorException("VO name is too long, >128 characters");
    }

    if (!vo.getShortName().matches("^[-_a-zA-z0-9.]{1,16}$")) {
      throw new InternalErrorException(
          "Wrong VO short name - must matches [-_a-zA-z0-9.]+ and not be longer than 16 characters.");
    }

    return vosManagerBl.updateVo(sess, vo);
  }
コード例 #8
0
ファイル: Vo.java プロジェクト: vlastavlasta/perun
 @Override
 public boolean equals(Object obj) {
   if (obj == null) {
     return false;
   }
   if (getClass() != obj.getClass()) {
     return false;
   }
   final Vo other = (Vo) obj;
   if (this.getId() != other.getId()) {
     return false;
   }
   if ((this.name == null) ? (other.name != null) : !this.name.equals(other.name)) {
     return false;
   }
   if ((this.shortName == null)
       ? (other.shortName != null)
       : !this.shortName.equals(other.shortName)) {
     return false;
   }
   return true;
 }
コード例 #9
0
ファイル: GroupsManagerImpl.java プロジェクト: Holdo/perun
  public List<Group> getGroups(PerunSession sess, Vo vo) throws InternalErrorException {
    try {
      return jdbc.query(
          "select  "
              + groupMappingSelectQuery
              + " from groups where vo_id=? order by "
              + Compatibility.orderByBinary("groups.name" + Compatibility.castToVarchar()),
          GROUP_MAPPER,
          vo.getId());

    } catch (RuntimeException ex) {
      throw new InternalErrorException(ex);
    }
  }
コード例 #10
0
ファイル: LdapConnectorImpl.java プロジェクト: dsarman/perun
  public void createVo(Vo vo) throws InternalErrorException {
    // Create a set of attributes for vo
    Attributes voAttributes = new BasicAttributes();

    // Create the objectclass to add
    Attribute voObjClasses = new BasicAttribute("objectClass");
    voObjClasses.add("top");
    voObjClasses.add("organization");
    voObjClasses.add("perunVO");

    // Add attributes
    voAttributes.put(voObjClasses);
    voAttributes.put("o", vo.getShortName());
    voAttributes.put("description", vo.getName());
    voAttributes.put("perunVoId", String.valueOf(vo.getId()));

    // Create the entires
    try {
      ldapTemplate.bind(getVoDNByVoId(String.valueOf(vo.getId())), null, voAttributes);
      log.debug("New entry created in LDAP: Vo {}.", vo);
    } catch (NameNotFoundException e) {
      throw new InternalErrorException(e);
    }
  }
コード例 #11
0
ファイル: GroupsManagerImpl.java プロジェクト: Holdo/perun
  @Override
  public List<Group> getGroupsWithAssignedExtSourceInVo(PerunSession sess, ExtSource source, Vo vo)
      throws InternalErrorException {
    try {
      return jdbc.query(
          "select "
              + groupMappingSelectQuery
              + " from group_ext_sources g_exts inner join groups on g_exts.group_id=groups.id "
              + " where g_exts.ext_source_id=? and groups.vo_id=?",
          GROUP_MAPPER,
          source.getId(),
          vo.getId());

    } catch (RuntimeException e) {
      throw new InternalErrorException(e);
    }
  }
コード例 #12
0
ファイル: Vo.java プロジェクト: vlastavlasta/perun
 public int compareTo(Vo vo) {
   if (vo != null) {
     return this.getName().compareTo(vo.getName());
   }
   return 1;
 }
コード例 #13
0
ファイル: GroupsManagerImpl.java プロジェクト: Holdo/perun
  public Group createGroup(PerunSession sess, Vo vo, Group group)
      throws GroupExistsException, InternalErrorException {
    Utils.notNull(group, "group");
    Utils.notNull(group.getName(), "group.getName()");

    // Check if the group already exists
    if (group.getParentGroupId() == null) {
      if (1
          == jdbc.queryForInt(
              "select count('x') from groups where lower(name)=lower(?) and vo_id=? and parent_group_id IS NULL",
              group.getName(),
              vo.getId())) {
        throw new GroupExistsException(
            "Group ["
                + group.getName()
                + "] already exists under VO ["
                + vo.getShortName()
                + "] and has parent Group with id is [NULL]");
      }
    } else {
      if (1
          == jdbc.queryForInt(
              "select count('x') from groups where lower(name)=lower(?) and vo_id=? and parent_group_id=?",
              group.getName(),
              vo.getId(),
              group.getParentGroupId())) {
        throw new GroupExistsException(
            "Group ["
                + group.getName()
                + "] already exists under VO ["
                + vo.getShortName()
                + "] and has parent Group with id ["
                + group.getParentGroupId()
                + "]");
      }
    }

    // Check the group name, it can contain only a-Z0-9_- and space
    if (!group.getShortName().matches("^[- a-zA-Z.0-9_]+$")) {
      throw new InternalErrorException(
          new IllegalArgumentException(
              "Wrong group name, group name can contain only a-Z0-9.-_: and space characters. "
                  + group));
    }

    try {
      // Store the group into the DB
      int newId = Utils.getNewId(jdbc, "groups_id_seq");

      jdbc.update(
          "insert into groups (id, parent_group_id, name, dsc, vo_id, created_by,created_at,modified_by,modified_at,created_by_uid,modified_by_uid) "
              + "values (?,?,?,?,?,?,"
              + Compatibility.getSysdate()
              + ",?,"
              + Compatibility.getSysdate()
              + ",?,?)",
          newId,
          group.getParentGroupId(),
          group.getName(),
          group.getDescription(),
          vo.getId(),
          sess.getPerunPrincipal().getActor(),
          sess.getPerunPrincipal().getActor(),
          sess.getPerunPrincipal().getUserId(),
          sess.getPerunPrincipal().getUserId());
      group.setId(newId);

      group.setVoId(vo.getId());

      return group;
    } catch (RuntimeException err) {
      throw new InternalErrorException(err);
    }
  }
コード例 #14
0
ファイル: LdapConnectorImpl.java プロジェクト: dsarman/perun
 public void updateVo(Vo vo, ModificationItem[] modificationItems) {
   ldapTemplate.modifyAttributes(getVoDNByVoId(String.valueOf(vo.getId())), modificationItems);
   log.debug("Entry modified in LDAP: Vo {}.", vo);
 }