[ 
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)

Reply via email to