UserService.java
3.98 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
package net.ziemers.swxercise.lg.user.service;
import java.util.Collection;
import java.util.Set;
import javax.ejb.Stateless;
import javax.inject.Inject;
import net.ziemers.swxercise.db.dao.user.UserDao;
import net.ziemers.swxercise.lg.model.user.Profile;
import net.ziemers.swxercise.lg.model.user.User;
import net.ziemers.swxercise.lg.user.dto.UserDto;
/**
* Diese Klasse stellt alle Dienste im Kontext einer Benutzerverwaltung zur Verfügung.
*/
@Stateless
public class UserService {
@Inject
private UserDao dao;
@Inject
private SessionContext sessionContext;
/**
* Meldet den Benutzer im SessionContext an.
*
* @param dto das {@link UserDto} enthält die Eigenschaften des anzumeldenden Benutzers
* @return <code>true</code>, wenn die Anmeldung erfolgreich war.
*/
public boolean loginUser(UserDto dto) {
final User user = dao.findByUsername(dto.getUsername());
return user != null && user.getProfile().isValidPassword(dto.getPassword()) && sessionContext.login(user);
}
/**
* Meldet den Benutzer vom SessionContext ab.
*
* @return <code>true</code>, wenn die Abmeldung erfolgreich war.
*/
public boolean logoutUser() {
return sessionContext.logout();
}
/**
* Findet den Benutzer mit der übergebenen Id.
*
* @param id die Id des gesuchten Benutzes.
* @return den gesuchten Benutzer, oder <code>null</code>, falls ein solcher nicht existiert.
*/
public User findUser(final Long id) {
return dao.findById(id);
}
/**
* Findet alle existierenden Benutzer.
* @return alle Benutzer, oder eine leere Collection, falls keine existieren.
*/
public Collection<User> findAllUsers() {
return dao.findAll(User.class);
}
/**
* Erstellt einen neuen Benutzer, sofern noch keiner mit dem selben Benutzernamen existiert.
*
* @param userDto das {@link UserDto} enthält die Eigenschaften des zu erstellenden Benutzers
* @return die Id des neuen Benutzers, wenn die Erstellung erfolgreich war.
*/
public Long createUser(final UserDto userDto) {
User user = dao.findByUsername(userDto.getUsername());
if (user == null) {
final Profile profile = new Profile(userDto.getUsername(), userDto.getPassword());
// wir füllen das User-Objekt mit Method Chaining
user = new User(userDto.getFirstname(), userDto.getLastname())
.withProfile(profile);
return dao.save(user);
}
return null;
}
/**
* Löscht den Benutzer mit der übergebenen Id.
*
* @param id die Id des zu löschenden Benutzers
*/
public User deleteUser(final Long id) {
return dao.remove(User.class, id);
}
/**
* Löscht den zurzeit angemeldeten Benutzer.
*
* @return <code>true</code>, wenn das Löschen des angemeldeten Benutzers erfolgreich war.
*/
public boolean deleteUser() {
// ist zurzeit ein Benutzer angemeldet, können wir ihn löschen
final User user = sessionContext.getUser();
return user != null && dao.remove(User.class, user.getId()) != null;
}
/**
* Liefert das {@link User}-Objekt des zurzeit angemeldeten Benutzers zurück.
* @return das User-Objekt des zurzeit angemeldeten Benutzers.
*/
public User getSessionUser() {
return sessionContext.getUser();
}
/**
* Prüft, ob der zurzeit angemeldete Benutzer eine Rolle aus der Liste der übergebenen Rollen besitzt.
*
* @param rolesSet die Rollenliste
* @return <code>true</code>, falls der zurzeit angemeldete Benutzer eine der übergebenen Rollen besitzt.
*/
public boolean isUserAllowed(final Set<String> rolesSet) {
final User user = getSessionUser();
// ist überhaupt ein Benutzer angemeldet?
if (user != null) {
// TODO muss noch implementiert werden
return true;
}
return false;
}
}