/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"); |
} |
} |