Skip to content
Snippets Groups Projects
Commit f436ce70 authored by Igor Ignác's avatar Igor Ignác
Browse files

Merge branch 'develop' into 'master'

Develop

See merge request !111
parents a245a672 7c16b143
No related branches found
No related tags found
Loading
Pipeline #181754 passed with stages
in 7 minutes and 20 seconds
2.1.3 Fix create, update and clone for training definitions
2.1.2 Fix authorization requirements for various training definition/instance functions, trim access codes on instance creation, removed stack trace from errors, it is no longer possible to create/edit non-local instances without setting the pool.
2.1.1 Modify validation of the access token during TI update, fix computation of the suitable task.
2.1.0 Structure of the archived definition is same as exported one, added field for map of games (MITRE techniques), endpoint to request all commands from training run, fix cloning of access phase, support backward mode (move to previous phases), unify default content of default phases.
......
......@@ -128,7 +128,7 @@ public class ExportImportFacade {
* @param trainingDefinitionId the id of the definition to be exported
* @return the file containing definition, {@link FileToReturnDTO}
*/
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.enums.RoleTypeSecurity).ROLE_TRAINING_ADMINISTRATOR)" +
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.adaptive.enums.RoleTypeSecurity).ROLE_ADAPTIVE_TRAINING_ADMINISTRATOR)" +
"or @securityService.isDesignerOfGivenTrainingDefinition(#trainingDefinitionId)")
@TransactionalRO
public FileToReturnDTO dbExport(Long trainingDefinitionId) {
......@@ -214,7 +214,7 @@ public class ExportImportFacade {
* @param trainingInstanceId the id of the instance to be exported
* @return the file containing instance, {@link FileToReturnDTO}
*/
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.enums.RoleTypeSecurity).ROLE_TRAINING_ADMINISTRATOR)" +
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.adaptive.enums.RoleTypeSecurity).ROLE_ADAPTIVE_TRAINING_ADMINISTRATOR)" +
"or @securityService.isOrganizerOfGivenTrainingInstance(#trainingInstanceId)")
@TransactionalRO
public FileToReturnDTO archiveTrainingInstance(Long trainingInstanceId) {
......
......@@ -91,7 +91,7 @@ public class TrainingDefinitionFacade {
* @param id of a Training Definition that would be returned
* @return specific {@link TrainingDefinitionByIdDTO}
*/
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.enums.RoleTypeSecurity).ROLE_TRAINING_ADMINISTRATOR)" +
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.adaptive.enums.RoleTypeSecurity).ROLE_ADAPTIVE_TRAINING_ADMINISTRATOR)" +
"or @securityService.isDesignerOfGivenTrainingDefinition(#id)")
@TransactionalRO
public TrainingDefinitionByIdDTO findById(Long id) {
......@@ -208,7 +208,7 @@ public class TrainingDefinitionFacade {
*
* @param trainingDefinitionUpdateDTO to be updated
*/
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.enums.RoleTypeSecurity).ROLE_TRAINING_ADMINISTRATOR)" +
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.adaptive.enums.RoleTypeSecurity).ROLE_ADAPTIVE_TRAINING_ADMINISTRATOR)" +
"or @securityService.isDesignerOfGivenTrainingDefinition(#trainingDefinitionUpdateDTO.getId())")
@TransactionalWO
public void update(TrainingDefinitionUpdateDTO trainingDefinitionUpdateDTO) {
......@@ -231,7 +231,7 @@ public class TrainingDefinitionFacade {
* @param title the title of cloned definition
* @return DTO of cloned definition, {@link TrainingDefinitionByIdDTO}
*/
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.enums.RoleTypeSecurity).ROLE_TRAINING_ADMINISTRATOR)" +
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.adaptive.enums.RoleTypeSecurity).ROLE_ADAPTIVE_TRAINING_ADMINISTRATOR)" +
"or @securityService.isDesignerOfGivenTrainingDefinition(#id)")
@TransactionalWO
public TrainingDefinitionByIdDTO clone(Long id, String title) {
......@@ -333,7 +333,7 @@ public class TrainingDefinitionFacade {
* @param authorsAddition ids of the authors to be added to the training definition
* @param authorsRemoval ids of the authors to be removed from the training definition.
*/
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.enums.RoleTypeSecurity).ROLE_TRAINING_ADMINISTRATOR)" +
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.adaptive.enums.RoleTypeSecurity).ROLE_ADAPTIVE_TRAINING_ADMINISTRATOR)" +
"or @securityService.isDesignerOfGivenTrainingDefinition(#trainingDefinitionId)")
@TransactionalWO
public void editAuthors(Long trainingDefinitionId, Set<Long> authorsAddition, Set<Long> authorsRemoval) {
......
......@@ -126,7 +126,7 @@ public class TrainingInstanceFacade {
* @param trainingInstanceUpdateDTO to be updated
* @return new access token if it was changed
*/
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.enums.RoleTypeSecurity).ROLE_TRAINING_ADMINISTRATOR)" +
@PreAuthorize("hasAuthority(T(cz.muni.ics.kypo.training.adaptive.enums.RoleTypeSecurity).ROLE_ADAPTIVE_TRAINING_ADMINISTRATOR)" +
"or @securityService.isOrganizerOfGivenTrainingInstance(#trainingInstanceUpdateDTO.getId())")
@TransactionalWO
public String update(TrainingInstanceUpdateDTO trainingInstanceUpdateDTO) {
......
......@@ -455,11 +455,13 @@ public class TrainingDefinitionService {
}
private void addLoggedInUserToTrainingDefinitionAsAuthor(TrainingDefinition trainingDefinition) {
Optional<User> user = userRefRepository.findUserByUserRefId(userManagementServiceApi.getLoggedInUserRefId());
Long loggedInId = userManagementServiceApi.getLoggedInUserRefId();
Optional<User> user = userRefRepository.findUserByUserRefId(loggedInId);
if (user.isPresent()) {
trainingDefinition.addAuthor(user.get());
} else {
User newUser = new User(userManagementServiceApi.getLoggedInUserRefId());
User newUser = new User(loggedInId);
userRefRepository.saveAndFlush(newUser);
trainingDefinition.addAuthor(newUser);
}
}
......
......@@ -115,7 +115,7 @@ public class TrainingInstanceService {
* @return created {@link TrainingInstance}
*/
public TrainingInstance create(TrainingInstance trainingInstance) {
trainingInstance.setAccessToken(generateAccessToken(trainingInstance.getAccessToken()));
trainingInstance.setAccessToken(generateAccessToken(trainingInstance.getAccessToken().trim()));
if (trainingInstance.getStartTime().isAfter(trainingInstance.getEndTime())) {
throw new EntityConflictException(new EntityErrorDetail(TrainingInstance.class, "id", trainingInstance.getId().getClass(), trainingInstance.getId(),
"End time must be later than start time."));
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment