[
https://issues.apache.org/jira/browse/SYNCOPE-880?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15389018#comment-15389018
]
ASF GitHub Bot commented on SYNCOPE-880:
----------------------------------------
Github user ilgrosso commented on a diff in the pull request:
https://github.com/apache/syncope/pull/26#discussion_r71833002
--- Diff:
core/workflow-activiti/src/main/java/org/apache/syncope/core/workflow/activiti/task/Recertify.java
---
@@ -0,0 +1,102 @@
+/*
+ * Copyright 2016 The Apache Software Foundation.
+ *
+ * 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.apache.syncope.core.workflow.activiti.task;
+
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+import org.apache.syncope.common.lib.types.AnyTypeKind;
+import org.apache.syncope.core.persistence.api.dao.PlainSchemaDAO;
+import org.apache.syncope.core.persistence.api.dao.UserDAO;
+import org.apache.syncope.core.persistence.api.entity.AnyUtilsFactory;
+import org.apache.syncope.core.persistence.api.entity.EntityFactory;
+import org.apache.syncope.core.persistence.api.entity.PlainSchema;
+import org.apache.syncope.core.persistence.api.entity.user.UPlainAttr;
+import org.apache.syncope.core.persistence.api.entity.user.User;
+import
org.apache.syncope.core.workflow.activiti.ActivitiUserWorkflowAdapter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+@Component
+public class Recertify extends AbstractActivitiServiceTask {
+
+ public static final String LAST_RECERTIFICATOR_ATTR =
"lastRecertificator";
+
+ public static final String LAST_RECERTIFICATION_ATTR =
"lastRecertification";
+
+ public static final String RECERTIFICATION_TIME =
"identity.recertification.day.interval";
+
+ @Autowired
+ protected UserDAO userDAO;
+
+ @Autowired
+ protected EntityFactory entityFactory;
+
+ @Autowired
+ private PlainSchemaDAO plainSchemaDAO;
+
+ @Autowired
+ protected AnyUtilsFactory anyUtilsFactory;
+
+ private PlainSchema lastRecertificationSchema;
+
+ private PlainSchema lastRecertificatorSchema;
+
+ @Override
+ protected void doExecute(final String executionId) {
+
+ LOG.debug("Processing Recertification {}", executionId);
+ User user = engine.getRuntimeService().
+ getVariable(executionId, ActivitiUserWorkflowAdapter.USER,
User.class);
+ String submitter = engine.getRuntimeService().
+ getVariable(executionId,
ActivitiUserWorkflowAdapter.FORM_SUBMITTER, String.class);
+
+ LOG.debug("Saving Recertification information for user {}",
user.getUsername());
+
+ lastRecertificatorSchema =
plainSchemaDAO.find(LAST_RECERTIFICATOR_ATTR);
+ lastRecertificationSchema =
plainSchemaDAO.find(LAST_RECERTIFICATION_ATTR);
+ setSchemaReadonly(false);
+
+
+ UPlainAttr recertifierAttr =
entityFactory.newEntity(UPlainAttr.class);
+ recertifierAttr.setOwner(user);
+ recertifierAttr.setSchema(lastRecertificatorSchema);
+
+ recertifierAttr.add(submitter,
anyUtilsFactory.getInstance(AnyTypeKind.USER));
+
+ DateFormat format = new
SimpleDateFormat(lastRecertificationSchema.getConversionPattern());
+ String recertificationDate = format.format(new Date());
+ UPlainAttr recertAttr = entityFactory.newEntity(UPlainAttr.class);
+ recertAttr.setOwner(user);
+ recertAttr.setSchema(lastRecertificationSchema);
+
+ recertAttr.add(recertificationDate,
anyUtilsFactory.getInstance(AnyTypeKind.USER));
+
+ user.add(recertAttr);
+ user.add(recertifierAttr);
+
+ setSchemaReadonly(true);
+
+ userDAO.save(user);
+ }
+
+ private void setSchemaReadonly(final boolean readonly) {
--- End diff --
This method can be removed for the same reasons stated above for static
fields; however, it wasn't needed anyway as read-only attributes are meant for
being managed via DAO rather than via DataBider.
> Identity Recertification
> ------------------------
>
> Key: SYNCOPE-880
> URL: https://issues.apache.org/jira/browse/SYNCOPE-880
> Project: Syncope
> Issue Type: New Feature
> Components: console, core
> Reporter: Nicola Scendoni
> Priority: Minor
>
> Identify Re-certification is required for many national and international
> standards like SOX, GxP, etc.
> The idea is to implement one scheduled task that filter users basing on some
> attributes (example: last recertification date, role,...) and move then on
> one state "to be certified" and assign one task to some group that has the
> responsibility to recertified the user, or delete it from the system.
> Some report should report evidence about when the users have been recertified
> and who was the certifier.
>
> This feature would be also the starting point to create account, role and
> groups re-certifications.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)