fixes Fortify
This commit is contained in:
parent
a65c4356b8
commit
231bccea45
4 changed files with 20 additions and 18 deletions
|
@ -32,23 +32,23 @@ public class PasswordChange implements Entity {
|
||||||
|
|
||||||
@NotEmpty(message = "user:password:notNull")
|
@NotEmpty(message = "user:password:notNull")
|
||||||
@JsonProperty(ATTR_NAME_PASSWORD)
|
@JsonProperty(ATTR_NAME_PASSWORD)
|
||||||
private final String password;
|
private final CharSequence password;
|
||||||
|
|
||||||
@NotEmpty(message = "user:newPassword:notNull")
|
@NotEmpty(message = "user:newPassword:notNull")
|
||||||
@Size(min = 8, max = 255, message = "user:newPassword:size:{min}:{max}:${validatedValue}")
|
@Size(min = 8, max = 255, message = "user:newPassword:size:{min}:{max}:${validatedValue}")
|
||||||
@JsonProperty(ATTR_NAME_NEW_PASSWORD)
|
@JsonProperty(ATTR_NAME_NEW_PASSWORD)
|
||||||
private final String newPassword;
|
private final CharSequence newPassword;
|
||||||
|
|
||||||
@NotEmpty(message = "user:confirmNewPassword:notNull")
|
@NotEmpty(message = "user:confirmNewPassword:notNull")
|
||||||
@JsonProperty(ATTR_NAME_CONFIRM_NEW_PASSWORD)
|
@JsonProperty(ATTR_NAME_CONFIRM_NEW_PASSWORD)
|
||||||
private final String confirmNewPassword;
|
private final CharSequence confirmNewPassword;
|
||||||
|
|
||||||
@JsonCreator
|
@JsonCreator
|
||||||
public PasswordChange(
|
public PasswordChange(
|
||||||
@JsonProperty(USER.ATTR_UUID) final String userId,
|
@JsonProperty(USER.ATTR_UUID) final String userId,
|
||||||
@JsonProperty(ATTR_NAME_PASSWORD) final String password,
|
@JsonProperty(ATTR_NAME_PASSWORD) final CharSequence password,
|
||||||
@JsonProperty(ATTR_NAME_NEW_PASSWORD) final String newPassword,
|
@JsonProperty(ATTR_NAME_NEW_PASSWORD) final CharSequence newPassword,
|
||||||
@JsonProperty(ATTR_NAME_CONFIRM_NEW_PASSWORD) final String confirmNewPassword) {
|
@JsonProperty(ATTR_NAME_CONFIRM_NEW_PASSWORD) final CharSequence confirmNewPassword) {
|
||||||
|
|
||||||
this.userId = userId;
|
this.userId = userId;
|
||||||
this.password = password;
|
this.password = password;
|
||||||
|
@ -56,15 +56,15 @@ public class PasswordChange implements Entity {
|
||||||
this.confirmNewPassword = confirmNewPassword;
|
this.confirmNewPassword = confirmNewPassword;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPassword() {
|
public CharSequence getPassword() {
|
||||||
return this.password;
|
return this.password;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getNewPassword() {
|
public CharSequence getNewPassword() {
|
||||||
return this.newPassword;
|
return this.newPassword;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getConfirmNewPassword() {
|
public CharSequence getConfirmNewPassword() {
|
||||||
return this.confirmNewPassword;
|
return this.confirmNewPassword;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -187,7 +187,7 @@ public class ExamDAOImpl implements ExamDAO {
|
||||||
.map(examRecord -> {
|
.map(examRecord -> {
|
||||||
if (BooleanUtils.isTrue(BooleanUtils.toBooleanObject(examRecord.getUpdating()))) {
|
if (BooleanUtils.isTrue(BooleanUtils.toBooleanObject(examRecord.getUpdating()))) {
|
||||||
if (!updateId.equals(examRecord.getLastupdate())) {
|
if (!updateId.equals(examRecord.getLastupdate())) {
|
||||||
throw new IllegalStateException("Exam is currently locked: " + examRecord);
|
throw new IllegalStateException("Exam is currently locked: " + examRecord.getExternalId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,7 +212,7 @@ public class ExamDAOImpl implements ExamDAO {
|
||||||
// check internal persistent write-lock
|
// check internal persistent write-lock
|
||||||
final ExamRecord oldRecord = this.examRecordMapper.selectByPrimaryKey(exam.id);
|
final ExamRecord oldRecord = this.examRecordMapper.selectByPrimaryKey(exam.id);
|
||||||
if (BooleanUtils.isTrue(BooleanUtils.toBooleanObject(oldRecord.getUpdating()))) {
|
if (BooleanUtils.isTrue(BooleanUtils.toBooleanObject(oldRecord.getUpdating()))) {
|
||||||
throw new IllegalStateException("Exam is currently locked: " + exam);
|
throw new IllegalStateException("Exam is currently locked: " + exam.externalId);
|
||||||
}
|
}
|
||||||
|
|
||||||
final ExamRecord examRecord = new ExamRecord(
|
final ExamRecord examRecord = new ExamRecord(
|
||||||
|
@ -450,7 +450,8 @@ public class ExamDAOImpl implements ExamDAO {
|
||||||
|
|
||||||
// consistency check
|
// consistency check
|
||||||
if (BooleanUtils.isTrue(BooleanUtils.toBooleanObject(examRec.getUpdating()))) {
|
if (BooleanUtils.isTrue(BooleanUtils.toBooleanObject(examRec.getUpdating()))) {
|
||||||
throw new IllegalStateException("Exam to end update is not in expected state: " + examRec);
|
throw new IllegalStateException(
|
||||||
|
"Exam to end update is not in expected state: " + examRec.getExternalId());
|
||||||
}
|
}
|
||||||
|
|
||||||
final ExamRecord newRecord = new ExamRecord(
|
final ExamRecord newRecord = new ExamRecord(
|
||||||
|
@ -480,7 +481,8 @@ public class ExamDAOImpl implements ExamDAO {
|
||||||
if (BooleanUtils.isFalse(BooleanUtils.toBooleanObject(examRec.getUpdating()))
|
if (BooleanUtils.isFalse(BooleanUtils.toBooleanObject(examRec.getUpdating()))
|
||||||
|| !updateId.equals(examRec.getLastupdate())) {
|
|| !updateId.equals(examRec.getLastupdate())) {
|
||||||
|
|
||||||
throw new IllegalStateException("Exam to end update is not in expected state: " + examRec);
|
throw new IllegalStateException(
|
||||||
|
"Exam to end update is not in expected state: " + examRec.getExternalId());
|
||||||
}
|
}
|
||||||
|
|
||||||
final ExamRecord newRecord = new ExamRecord(
|
final ExamRecord newRecord = new ExamRecord(
|
||||||
|
|
|
@ -86,7 +86,7 @@ public class ExamConfigXMLParser extends DefaultHandler {
|
||||||
private static final Set<String> KNOWN_INLINE_TABLES = new HashSet<>(Arrays.asList(
|
private static final Set<String> KNOWN_INLINE_TABLES = new HashSet<>(Arrays.asList(
|
||||||
"arguments"));
|
"arguments"));
|
||||||
|
|
||||||
public static final Set<String> PASSWORD_ATTRIBUTES = new HashSet<>(Arrays.asList(
|
public static final Set<String> SECRET_ATTRIBUTES = new HashSet<>(Arrays.asList(
|
||||||
"hashedQuitPassword",
|
"hashedQuitPassword",
|
||||||
"hashedAdminPassword"));
|
"hashedAdminPassword"));
|
||||||
|
|
||||||
|
@ -443,7 +443,7 @@ public class ExamConfigXMLParser extends DefaultHandler {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (PASSWORD_ATTRIBUTES.contains(name)) {
|
if (SECRET_ATTRIBUTES.contains(name)) {
|
||||||
// NOTE this is a special case, if a hashed password is imported it is not possible to view this password
|
// NOTE this is a special case, if a hashed password is imported it is not possible to view this password
|
||||||
// later in plain text to the administrator. Therefore this password hash is marked here as imported
|
// later in plain text to the administrator. Therefore this password hash is marked here as imported
|
||||||
// and internally encrypted as usual. So the password will be decrypted while viewing and is recognizable
|
// and internally encrypted as usual. So the password will be decrypted while viewing and is recognizable
|
||||||
|
|
|
@ -111,7 +111,7 @@ public class StringConverter implements AttributeValueConverter {
|
||||||
out.write(Utils.toByteArray(String.format(
|
out.write(Utils.toByteArray(String.format(
|
||||||
template,
|
template,
|
||||||
realName,
|
realName,
|
||||||
convertPassword(realName, value))));
|
convertSecret(realName, value))));
|
||||||
} else {
|
} else {
|
||||||
out.write(Utils.toByteArray(String.format(
|
out.write(Utils.toByteArray(String.format(
|
||||||
emptyTemplate,
|
emptyTemplate,
|
||||||
|
@ -119,7 +119,7 @@ public class StringConverter implements AttributeValueConverter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private CharSequence convertPassword(
|
private CharSequence convertSecret(
|
||||||
final String attributeName,
|
final String attributeName,
|
||||||
final String value) {
|
final String value) {
|
||||||
|
|
||||||
|
@ -127,7 +127,7 @@ public class StringConverter implements AttributeValueConverter {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ExamConfigXMLParser.PASSWORD_ATTRIBUTES.contains(attributeName)) {
|
if (!ExamConfigXMLParser.SECRET_ATTRIBUTES.contains(attributeName)) {
|
||||||
return value;
|
return value;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue