diff --git a/scm-core/src/main/java/sonia/scm/HandlerBase.java b/scm-core/src/main/java/sonia/scm/HandlerBase.java index 42c159a767..bbe78c8cf7 100644 --- a/scm-core/src/main/java/sonia/scm/HandlerBase.java +++ b/scm-core/src/main/java/sonia/scm/HandlerBase.java @@ -35,11 +35,8 @@ package sonia.scm; //~--- JDK imports ------------------------------------------------------------ -import com.github.sdorra.ssp.PermissionCheck; - import java.io.Closeable; import java.io.IOException; -import java.util.function.Function; /** * The base class of all handlers. @@ -78,15 +75,4 @@ public interface HandlerBase * @throws IOException */ void modify(T object) throws NotFoundException; - - /** - * Modifies a persistent object after checking with the given permission checker. - * - * @param object to modify - * @param permissionChecker check permission before to modify - * @throws IOException - */ - default void modify(T object, Function permissionChecker) throws NotFoundException{ - modify(object); - } } diff --git a/scm-core/src/main/java/sonia/scm/util/AuthenticationUtil.java b/scm-core/src/main/java/sonia/scm/util/AuthenticationUtil.java deleted file mode 100644 index a0c021fa3c..0000000000 --- a/scm-core/src/main/java/sonia/scm/util/AuthenticationUtil.java +++ /dev/null @@ -1,12 +0,0 @@ -package sonia.scm.util; - -import org.apache.shiro.SecurityUtils; - -public class AuthenticationUtil { - - public static String getAuthenticatedUsername() { - Object subject = SecurityUtils.getSubject().getPrincipal(); - AssertUtil.assertIsNotNull(subject); - return subject.toString(); - } -} diff --git a/scm-it/src/test/java/sonia/scm/it/UserITCase.java b/scm-it/src/test/java/sonia/scm/it/UserITCase.java index f517123dcc..4c7e3b2cac 100644 --- a/scm-it/src/test/java/sonia/scm/it/UserITCase.java +++ b/scm-it/src/test/java/sonia/scm/it/UserITCase.java @@ -29,7 +29,7 @@ public class UserITCase { .assertStatusCode(200) .assertAdmin(aBoolean -> assertThat(aBoolean).isEqualTo(Boolean.TRUE)) .assertPassword(Assert::assertNull) - .requestChangePassword(password, newPassword) // the oldPassword is needed when the own password should be changed + .requestChangePassword(newPassword) .assertStatusCode(204); // assert password is changed -> login with the new Password ScmRequests.start() diff --git a/scm-it/src/test/java/sonia/scm/it/utils/ScmRequests.java b/scm-it/src/test/java/sonia/scm/it/utils/ScmRequests.java index d15cdc9b7f..69c79c37bf 100644 --- a/scm-it/src/test/java/sonia/scm/it/utils/ScmRequests.java +++ b/scm-it/src/test/java/sonia/scm/it/utils/ScmRequests.java @@ -4,6 +4,7 @@ import io.restassured.RestAssured; import io.restassured.response.Response; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import sonia.scm.user.User; import sonia.scm.web.VndMediaType; import java.util.List; @@ -41,7 +42,7 @@ public class ScmRequests { return new IndexResponse(applyGETRequest(RestUtil.REST_BASE_URL.toString())); } - public UserResponse requestUser(String username, String password, String pathParam) { + public , T extends ModelResponse> UserResponse requestUser(String username, String password, String pathParam) { setUsername(username); setPassword(password); return new UserResponse<>(applyGETRequest(RestUtil.REST_BASE_URL.resolve("users/"+pathParam).toString()), null); @@ -176,7 +177,7 @@ public class ScmRequests { return new MeResponse<>(applyGETRequestFromLink(response, LINK_ME), this); } - public UserResponse requestUser(String username) { + public UserResponse requestUser(String username) { return new UserResponse<>(applyGETRequestFromLinkWithParams(response, LINK_USERS, username), this); } @@ -288,7 +289,7 @@ public class ScmRequests { } - public class MeResponse extends UserResponse { + public class MeResponse extends UserResponse, PREV> { public MeResponse(Response response, PREV previousResponse) { @@ -300,7 +301,7 @@ public class ScmRequests { } } - public class UserResponse extends ModelResponse, PREV> { + public class UserResponse, PREV extends ModelResponse> extends ModelResponse { public static final String LINKS_PASSWORD_HREF = "_links.password.href"; @@ -308,34 +309,29 @@ public class ScmRequests { super(response, previousResponse); } - public UserResponse assertPassword(Consumer assertPassword) { + public SELF assertPassword(Consumer assertPassword) { return super.assertSingleProperty(assertPassword, "password"); } - public UserResponse assertType(Consumer assertType) { + public SELF assertType(Consumer assertType) { return assertSingleProperty(assertType, "type"); } - public UserResponse assertAdmin(Consumer assertAdmin) { + public SELF assertAdmin(Consumer assertAdmin) { return assertSingleProperty(assertAdmin, "admin"); } - public UserResponse assertPasswordLinkDoesNotExists() { + public SELF assertPasswordLinkDoesNotExists() { return assertPropertyPathDoesNotExists(LINKS_PASSWORD_HREF); } - public UserResponse assertPasswordLinkExists() { + public SELF assertPasswordLinkExists() { return assertPropertyPathExists(LINKS_PASSWORD_HREF); } public ChangePasswordResponse requestChangePassword(String newPassword) { - return requestChangePassword(null, newPassword); + return new ChangePasswordResponse<>(applyPUTRequestFromLink(super.response, LINKS_PASSWORD_HREF, VndMediaType.PASSWORD_OVERWRITE, createPasswordChangeJson(null, newPassword)), this); } - - public ChangePasswordResponse requestChangePassword(String oldPassword, String newPassword) { - return new ChangePasswordResponse<>(applyPUTRequestFromLink(super.response, LINKS_PASSWORD_HREF, VndMediaType.PASSWORD_OVERWRITE, createPasswordChangeJson(oldPassword, newPassword)), this); - } - } diff --git a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IdResourceManagerAdapter.java b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IdResourceManagerAdapter.java index af2b4217e9..9fe3d8284d 100644 --- a/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IdResourceManagerAdapter.java +++ b/scm-webapp/src/main/java/sonia/scm/api/v2/resources/IdResourceManagerAdapter.java @@ -1,29 +1,18 @@ package sonia.scm.api.v2.resources; -import com.github.sdorra.ssp.PermissionCheck; import de.otto.edison.hal.HalRepresentation; import sonia.scm.AlreadyExistsException; import sonia.scm.ConcurrentModificationException; import sonia.scm.Manager; import sonia.scm.ModelObject; import sonia.scm.PageResult; -import sonia.scm.user.ChangePasswordNotAllowedException; -import sonia.scm.user.User; -import sonia.scm.user.UserManager; -import sonia.scm.user.UserPermissions; -import sonia.scm.util.AssertUtil; -import sonia.scm.util.AuthenticationUtil; import javax.ws.rs.core.Response; -import java.text.MessageFormat; import java.util.Optional; -import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; import java.util.function.Supplier; -import static sonia.scm.user.ChangePasswordNotAllowedException.WRONG_USER_TYPE; - /** * Facade for {@link SingleResourceManagerAdapter} and {@link CollectionResourceManagerAdapter} * for model objects handled by a single id.