Subversion Repositories bacoAlunos

Compare Revisions

Ignore whitespace Rev 1345 → Rev 1346

/branches/v3/impl/src/java/pt/estgp/estgweb/Globals.java
426,6 → 426,8
 
 
public static final String QUESTIONARIOS_ADMIN = "questionarios.admin";
public static final String QUESTIONARIOS_ASSIGNEMENTS_ADMIN = "questionarios.atribuicoes.admin";
public static final String QUESTIONARIOS_TIPOLOGIAS_ADMIN = "questionarios.tipologias.admin";
public static final boolean USE_XSL_CACHE =ConfigProperties.getBooleanProperty("xsl.use.cache");
 
 
/branches/v3/impl/src/java/pt/estgp/estgweb/services/users/UserRoleConfigService.java
121,6 → 121,36
return roles;
}
 
public Integer checkIfAreNewStandardRoles(UserSession userSession)
{
int totalNew = 0;
BufferedReader reader = new BufferedReader(new StringReader(INIT_ROLES));
String roleSpec = null;
try {
while((roleSpec = reader.readLine()) != null)
{
 
String[] fields = roleSpec.split("=");
String role = fields[0].substring("user.role.".length());
String desc = fields[1];
 
UserRoleConfigImpl userRoleConfig = DaoFactory.getUserRoleConfigDaoImpl().findByRole(role);
if(userRoleConfig == null)
{
totalNew++;
userRoleConfig = DomainObjectFactory.createUserRoleConfigImpl();
userRoleConfig.setRole(role.trim());
userRoleConfig.setValue(desc);
userRoleConfig.setValid(true);
DaoFactory.getUserRoleConfigDaoImpl().save(userRoleConfig);
}
}
} catch (IOException e) {
logger.error(e,e);
}
return totalNew;
}
 
private static final String INIT_ROLES = "user.role.all=Todos\n" +
"user.role.admin=Administrador\n" +
"user.role.student=Estudante\n" +
142,7 → 172,9
"user.role.worker=Funcionário\n" +
"user.role.invited=Convidado\n" +
"user.role.services=Serviços\n" +
"questionarios.admin=Administração de Questionários\n" +
"user.role.questionarios.tipologias.admin=Questionarios Tipologias\n" +
"user.role.questionarios.atribuicoes.admin=Questionarios Atribuições\n" +
"user.role.questionarios.admin=Administração de Questionários\n" +
"user.role.servicesPrograms=Gestão de Programas Curriculares\n" +
"user.role.administrativeCouncil=Membro da Direcção\n" +
"user.role.administrativeCouncil.director=Director\n" +
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/pedagogico/UpdateCoursesAndUnitsJobService.java
639,7 → 639,7
 
public void updateCheckVarPedagogico(long questionarioId,long unidadeAfetaId, String op,String val,UserSession session, QuestionarioImpl questionarioCleared) throws NotAuthorizedException {
 
if(!questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name()))
if(!questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS.name()) && !questionarioCleared.isClear((UserSessionImpl) session,QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name()))
{
throw new NotAuthorizedException("Nao tem autorização para alterar as tipologias");
}
/branches/v3/impl/src/java/pt/estgp/estgweb/services/questionarios/PedagogicoAlunosProcessor.java
1,5 → 1,6
package pt.estgp.estgweb.services.questionarios;
 
import pt.estgp.estgweb.Globals;
import pt.estgp.estgweb.domain.IAnswersProcessor;
import pt.estgp.estgweb.domain.JobServiceTask;
import pt.estgp.estgweb.domain.QuestionarioImpl;
47,28 → 48,36
 
public void initClearances(QuestionarioImpl q, UserSessionImpl usession, SimpleClearanceRuledSupport s)
{
if(q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.START ||
q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED)
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_ANO_SEMESTRE.name(),usession);
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
{
if(q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.START ||
q.getSubStatePedagodigoEnum() == QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED)
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_ANO_SEMESTRE.name(),usession);
}
if(q.getSubStatePedagodigoEnum().getPosition() >= QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED.getPosition() &&
q.getSubStatePedagodigoEnum().getPosition() < QuestionarioImpl.SubStatePedagogico.FINNISHED_ANSWERS_GENERATING.getPosition())
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SEE_SELECT_COURSES.name(),usession);
if(q.getCourseSelectionTaskId() <= 0)
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession);
else
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
{
JobServiceTask task = DaoFactory.getJobServiceTaskDaoImpl().load(q.getCourseSelectionTaskId());
if(task.isExecuted() || (task.getSaveDate() != null &&
System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)) //half hour blocked
if(q.getCourseSelectionTaskId() <= 0)
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession);
else
{
if(!task.isExecuted() && System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)
JobServiceTask task = DaoFactory.getJobServiceTaskDaoImpl().load(q.getCourseSelectionTaskId());
if(task.isExecuted() || (task.getSaveDate() != null &&
System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)) //half hour blocked
{
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED);//rolling back to year semestre assigned
if(!task.isExecuted() && System.currentTimeMillis()-task.getSaveDate().getTime()>1800000)
{
q.setSubStatePedagogicoClass(QuestionarioImpl.SubStatePedagogico.YEAR_SEMESTRE_ASSIGNED);//rolling back to year semestre assigned
}
task.setExecuted(true);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession);
}
task.setExecuted(true);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SCHEDULLE_SELECT_COURSES.name(),usession);
}
}
}
76,9 → 85,27
if(q.getSubStatePedagodigoEnum().getPosition() >= QuestionarioImpl.SubStatePedagogico.COURSES_ASSIGNED.getPosition() &&
q.getSubStatePedagodigoEnum().getPosition() < QuestionarioImpl.SubStatePedagogico.FINNISHED_ANSWERS_GENERATING.getPosition())
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_ASSIGN_ANSWERS.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REVERT_ALL_ASSIGNEMENTS.name(),usession);
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_TIPOLOGIAS_ADMIN))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_TIPOLOGIES.name(),usession);
}
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_ADMIN))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_CHANGE_ASSIGNEMENTS.name(),usession);
}
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_START_ASSIGN_ANSWERS.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_REVERT_ALL_ASSIGNEMENTS.name(),usession);
}
}
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/QuestionarioImpl.java
278,28 → 278,39
 
SimpleClearanceRuledSupport s = new SimpleClearanceRuledSupport();
 
if((usession.getUser().isSuperuserOrAdmin() || usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN))
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ASSIGNEMENTS_ADMIN)
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_TIPOLOGIAS_ADMIN ))
{
 
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_FORM.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SEE_ADMIN.name(),usession);
if(getStateEnum() == QuestionarioImpl.State.CREATED &&
getQuestionarioHistoryDrive() != null &&
getiAnswersProcessorClass() != null)
 
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_FORM.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_STATE_ASSIGNATION_DETAILS.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_DELETE.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_ANSWER_PROCESSOR.name(),usession);
if(getStateEnum() == QuestionarioImpl.State.CREATED &&
getQuestionarioHistoryDrive() != null &&
getiAnswersProcessorClass() != null)
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_FORM.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SET_STATE_ASSIGNATION_DETAILS.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_DELETE.name(),usession);
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_ANSWER_PROCESSOR.name(),usession);
}
}
//ANO SEMESTRE ESPECIFICO apenas neste estado, em atribuição de respostas e respostas atribuidas já não permite
if(getStateEnum() == QuestionarioImpl.State.ASSIGNATION_DETAILS)
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_FORM.name(),usession);
if((usession.getUser().isSuperuserOrAdmin()
|| usession.getUser().hasRole(Globals.QUESTIONARIOS_ADMIN)))
{
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_SAVE_FORM.name(),usession);
}
s.addClearance(QuestionarioImpl.QuestionarioClearancesOperation.QUESTIONARIO_ASSIGNATION_OPERATIONS.name(),usession);
 
getiAnswersProcessorClass().initClearances(this,usession,s);
 
 
}
if(getStateEnum() == State.ASSIGNING_ANSWERS_PROCESSEMENT)
{
312,6 → 323,7
public static enum QuestionarioClearancesOperation
{
 
QUESTIONARIO_NEW_FORM,
QUESTIONARIO_SAVE_FORM,
QUESTIONARIO_SEE_FORM,
QUESTIONARIO_SEE_ADMIN,
327,6 → 339,7
QUESTIONARIO_SCHEDULLE_SEE_SELECT_COURSES,
QUESTIONARIO_CHANGE_TIPOLOGIES,
QUESTIONARIO_START_ASSIGN_ANSWERS,
QUESTIONARIO_CHANGE_ASSIGNEMENTS,
;
 
public static QuestionarioClearancesOperation parse(String clearance)
/branches/v3/impl/src/java/pt/estgp/estgweb/domain/dao/impl/UserRoleConfigDaoImpl.java
1,7 → 1,13
package pt.estgp.estgweb.domain.dao.impl;
 
import org.apache.log4j.Logger;
import pt.estgp.estgweb.domain.UserRoleConfig;
import pt.estgp.estgweb.domain.UserRoleConfigImpl;
 
import java.util.List;
 
import static org.hibernate.criterion.Restrictions.eq;
 
/**
* Created by IntelliJ IDEA.
* User: Filipe Matos
14,10 → 20,20
private static final Logger logger = Logger.getLogger(UserRoleConfigDaoImpl.class);
 
protected static UserRoleConfigDaoImpl myInstance = null;
 
public static UserRoleConfigDaoImpl getInstance() {
if (myInstance == null || !(myInstance instanceof UserRoleConfigDaoImpl))
myInstance = new UserRoleConfigDaoImpl();
return myInstance;
}
 
public UserRoleConfigImpl findByRole(String role){
List<UserRoleConfig> userRoleConfigList = createCriteria().add(eq("role", role)).list();
if(userRoleConfigList.size() > 0)
{
return (UserRoleConfigImpl) userRoleConfigList.get(0);
}
return null;
}
 
}
/branches/v3/impl/src/java/pt/estgp/estgweb/filters/filters/RoleUsers.java
43,7 → 43,7
if(RoleManager.hasRole(userSession.getUser(),roleStr))
return;
}
logger.warn(userSession.getUser().getUsername() + ": try access restricted area");
//logger.warn(userSession.getUser().getUsername() + ": try access restricted area");
throw new AccessDeniedOperationException("fail.role");
}
}
/branches/v3/impl/src/java/pt/estgp/estgweb/web/tags/ClearOperationTag.java
61,7 → 61,15
{
UserSessionImpl userSession = (UserSessionImpl) UserSessionProxy.loadUserSessionFromRequest((HttpServletRequest) pageContext.getRequest());
ClearanceRuled ruledObj = (ClearanceRuled) RequestUtils.lookup(pageContext, name, property, null);
return ruledObj.isClear(userSession,op);
String[] ops = op.split(",");
for(String opSub: ops)
{
if(ruledObj.isClear(userSession,opSub))
{
return true;
}
}
return false;
}
 
public int doEndTag() throws JspException
/branches/v3/impl/src/java/pt/estgp/estgweb/web/form/profile/ProfileForm.java
151,7 → 151,8
{
addMessageWithKeys(errors, httpServletRequest, "errors.required","username");
}
if(userView.getEmail() == null || userView.getEmail().length() == 0)
if((userView.getOutEmail() == null || userView.getOutEmail().length() == 0) &&
(userView.getEmail() == null || userView.getEmail().length() == 0))
{
addMessageWithKeys(errors, httpServletRequest, "errors.required","email");
}
/branches/v3/impl/src/java/pt/estgp/estgweb/web/controllers/configuration/UserRolesController.java
129,6 → 129,35
return mapping.findForward("userRoles");
}
 
public ActionForward checkNewRoles(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Throwable {
 
 
IServiceManager sm = ServiceManager.getInstance();
String[] names = new String[]{};
Object[] args = new Object[]{};
 
try
{
Integer newRoles = (Integer) sm.execute(RequestUtils.getRequester(request, response), "RefreshNewStandardRoles", args, names);
addMessage(request, "configuration.role.refreshed",""+newRoles);
UserRoleProxy.setDirty();
}
catch (FilterChainFailedException e)
{
return mapping.findForward("error401");
}
catch (Throwable e)
{
logger.error(e, e);
throw e;
}
return mapping.findForward("userRoles");
}
 
 
 
}