Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
minerva
core
Commits
4b525d0a
Commit
4b525d0a
authored
Jun 30, 2020
by
Piotr Gawron
Browse files
removing user removes also data overlays
parent
6466b4b7
Pipeline
#29130
passed with stage
in 21 minutes and 25 seconds
Changes
7
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
CHANGELOG
View file @
4b525d0a
...
...
@@ -8,6 +8,7 @@ minerva (15.0.2) stable; urgency=medium
additional
reactant
/
product
(#
1303
)
*
Bug
fix
:
coordinates
of
children
in
compact
complexes
in
CellDesigner
were
wrong
(#
1304
)
*
Bug
fix
:
user
data
overlays
were
not
removed
when
user
was
deleted
(#
1301
)
--
Piotr
Gawron
<
piotr
.
gawron
@
uni
.
lu
>
Mon
,
29
Jun
2020
11
:
00
:
00
+
0200
...
...
persist/src/main/java/lcsb/mapviewer/persist/dao/map/LayoutDao.java
View file @
4b525d0a
...
...
@@ -6,6 +6,7 @@ import org.springframework.stereotype.Repository;
import
lcsb.mapviewer.model.Project
;
import
lcsb.mapviewer.model.map.layout.Layout
;
import
lcsb.mapviewer.model.user.User
;
import
lcsb.mapviewer.persist.dao.BaseDao
;
@Repository
...
...
@@ -33,4 +34,12 @@ public class LayoutDao extends BaseDao<Layout> {
}
return
null
;
}
public
List
<
Layout
>
getLayoutsByUser
(
User
user
)
{
List
<
Layout
>
layouts
=
getElementsByParameter
(
"creator_id"
,
user
.
getId
());
for
(
Layout
layout
:
layouts
)
{
refresh
(
layout
);
}
return
layouts
;
}
}
rest-api/src/main/java/lcsb/mapviewer/api/users/UserController.java
View file @
4b525d0a
...
...
@@ -103,7 +103,7 @@ public class UserController extends BaseController {
@PreAuthorize
(
"hasAuthority('IS_ADMIN')"
)
@DeleteMapping
(
value
=
"/{login:.+}"
)
public
Map
<
String
,
Object
>
removeUser
(
@PathVariable
(
value
=
"login"
)
String
login
)
throws
Query
Exception
{
public
Map
<
String
,
Object
>
removeUser
(
@PathVariable
(
value
=
"login"
)
String
login
)
throws
Exception
{
return
userRest
.
removeUser
(
login
);
}
...
...
rest-api/src/main/java/lcsb/mapviewer/api/users/UserRestImpl.java
View file @
4b525d0a
package
lcsb.mapviewer.api.users
;
import
java.io.IOException
;
import
java.util.*
;
import
org.apache.logging.log4j.LogManager
;
...
...
@@ -17,10 +18,12 @@ import lcsb.mapviewer.api.*;
import
lcsb.mapviewer.common.Configuration
;
import
lcsb.mapviewer.common.exception.InvalidArgumentException
;
import
lcsb.mapviewer.model.map.MiriamType
;
import
lcsb.mapviewer.model.map.layout.Layout
;
import
lcsb.mapviewer.model.security.Privilege
;
import
lcsb.mapviewer.model.security.PrivilegeType
;
import
lcsb.mapviewer.model.user.*
;
import
lcsb.mapviewer.model.user.annotator.*
;
import
lcsb.mapviewer.services.interfaces.ILayoutService
;
@Transactional
@Service
...
...
@@ -32,10 +35,12 @@ public class UserRestImpl extends BaseRestImpl {
@SuppressWarnings
(
"unused"
)
private
Logger
logger
=
LogManager
.
getLogger
(
UserRestImpl
.
class
);
private
PasswordEncoder
passwordEncoder
;
private
ILayoutService
overlayService
;
@Autowired
public
UserRestImpl
(
PasswordEncoder
passwordEncoder
)
{
public
UserRestImpl
(
PasswordEncoder
passwordEncoder
,
ILayoutService
overlayService
)
{
this
.
passwordEncoder
=
passwordEncoder
;
this
.
overlayService
=
overlayService
;
}
public
Map
<
String
,
Object
>
getUser
(
String
login
,
String
columns
)
...
...
@@ -720,13 +725,17 @@ public class UserRestImpl extends BaseRestImpl {
return
getUser
(
login
,
""
);
}
public
Map
<
String
,
Object
>
removeUser
(
String
login
)
throws
QueryException
{
public
Map
<
String
,
Object
>
removeUser
(
String
login
)
throws
QueryException
,
IOException
{
User
user
=
getUserService
().
getUserByLogin
(
login
);
if
(
user
==
null
)
{
throw
new
ObjectNotFoundException
(
"user doesn't exists"
);
}
else
if
(
user
.
getLogin
().
equals
(
Configuration
.
ANONYMOUS_LOGIN
))
{
throw
new
OperationNotAllowedException
(
"guest account cannot be removed"
);
}
List
<
Layout
>
overlays
=
overlayService
.
getLayoutsByUser
(
user
);
for
(
Layout
layout
:
overlays
)
{
overlayService
.
removeLayout
(
layout
,
null
);
}
getUserService
().
deleteUser
(
user
);
return
okStatus
();
}
...
...
service/src/main/java/lcsb/mapviewer/services/impl/LayoutService.java
View file @
4b525d0a
...
...
@@ -840,4 +840,9 @@ public class LayoutService implements ILayoutService {
}
return
result
;
}
@Override
public
List
<
Layout
>
getLayoutsByUser
(
User
user
)
{
return
layoutDao
.
getLayoutsByUser
(
user
);
}
}
service/src/main/java/lcsb/mapviewer/services/interfaces/ILayoutService.java
View file @
4b525d0a
...
...
@@ -425,4 +425,6 @@ public interface ILayoutService {
}
}
List
<
Layout
>
getLayoutsByUser
(
User
user
);
}
web/src/test/java/lcsb/mapviewer/web/UserControllerIntegrationTest.java
View file @
4b525d0a
...
...
@@ -30,6 +30,7 @@ import lcsb.mapviewer.model.security.PrivilegeType;
import
lcsb.mapviewer.model.user.ConfigurationElementType
;
import
lcsb.mapviewer.model.user.User
;
import
lcsb.mapviewer.persist.dao.ProjectDao
;
import
lcsb.mapviewer.persist.dao.map.LayoutDao
;
import
lcsb.mapviewer.services.interfaces.IConfigurationService
;
import
lcsb.mapviewer.services.interfaces.IUserService
;
...
...
@@ -56,6 +57,9 @@ public class UserControllerIntegrationTest extends ControllerIntegrationTest {
@Autowired
private
ProjectDao
projectDao
;
@Autowired
private
LayoutDao
layoutDao
;
@Before
public
void
setup
()
{
user
=
createUser
(
TEST_USER_LOGIN
,
TEST_USER_PASSWORD
);
...
...
@@ -438,4 +442,23 @@ public class UserControllerIntegrationTest extends ControllerIntegrationTest {
.
andExpect
(
status
().
isForbidden
());
}
@Test
public
void
removeUserWithLayouts
()
throws
Exception
{
MockHttpSession
session
=
createSession
(
BUILT_IN_TEST_ADMIN_LOGIN
,
BUILT_IN_TEST_ADMIN_PASSWORD
);
Project
project
=
new
Project
(
"test_project"
);
project
.
setOwner
(
userService
.
getUserByLogin
(
BUILT_IN_TEST_ADMIN_LOGIN
));
projectDao
.
add
(
project
);
createOverlay
(
project
,
user
);
RequestBuilder
request
=
delete
(
"/users/"
+
user
.
getLogin
())
.
session
(
session
);
mockMvc
.
perform
(
request
)
.
andExpect
(
status
().
is2xxSuccessful
());
assertEquals
(
0
,
layoutDao
.
getLayoutsByProject
(
project
).
size
());
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment