Skip to content

Commit 5230203

Browse files
committed
Adding SpringUserAdapter and making it implement UserDetails. User class is now free of Spring, Adapter takes care about that.
1 parent 9fdbd23 commit 5230203

File tree

5 files changed

+71
-45
lines changed

5 files changed

+71
-45
lines changed

app/src/main/java/com/webcalc/billing/BillingController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.webcalc.billing;
22

3+
import com.webcalc.user.SpringUserAdapter;
34
import com.webcalc.user.User;
45
import org.springframework.security.core.Authentication;
56
import org.springframework.web.bind.annotation.GetMapping;
@@ -19,6 +20,7 @@ public BillingController(Billing billing) {
1920
@GetMapping("/balance")
2021
public String getBalance(HttpServletRequest request) {
2122
Authentication auth = (Authentication) request.getUserPrincipal();
22-
return billing.getBalance(((User) auth.getPrincipal()).id).toPlainString();
23+
User user = ((SpringUserAdapter) auth.getPrincipal()).getUser();
24+
return billing.getBalance(user.id).toPlainString();
2325
}
2426
}

app/src/main/java/com/webcalc/calculator/CalculatorController.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.webcalc.calculator;
22

3+
import com.webcalc.user.SpringUserAdapter;
34
import com.webcalc.user.User;
45
import org.springframework.security.core.Authentication;
56
import org.springframework.web.bind.annotation.PostMapping;
@@ -26,7 +27,8 @@ public String calculate(@RequestBody String body, HttpSession session, HttpServl
2627
if (session.getAttribute(MAX_FRACTION_DIGITS) == null)
2728
session.setAttribute(MAX_FRACTION_DIGITS, Calculator.DEFAULT_MAX_FRACTION_DIGITS);
2829
Authentication auth = (Authentication) request.getUserPrincipal();
29-
return calculator.eval(((User) auth.getPrincipal()).id, body, (Integer) session.getAttribute(MAX_FRACTION_DIGITS));
30+
User user = ((SpringUserAdapter) auth.getPrincipal()).getUser();
31+
return calculator.eval(user.id, body, (Integer) session.getAttribute(MAX_FRACTION_DIGITS));
3032
}
3133

3234
@PutMapping("/maxFractionDigits")
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.webcalc.user;
2+
3+
import org.springframework.security.core.GrantedAuthority;
4+
import org.springframework.security.core.userdetails.UserDetails;
5+
6+
import java.util.Collection;
7+
8+
import static java.util.Collections.emptyList;
9+
10+
public class SpringUserAdapter implements UserDetails {
11+
12+
private final User user;
13+
14+
public SpringUserAdapter(User user) {
15+
this.user = user;
16+
}
17+
18+
public User getUser() {
19+
return user;
20+
}
21+
22+
@Override
23+
public Collection<? extends GrantedAuthority> getAuthorities() {
24+
return emptyList();
25+
}
26+
27+
@Override
28+
public String getPassword() {
29+
return user.getPassword();
30+
}
31+
32+
@Override
33+
public String getUsername() {
34+
return user.getUsername();
35+
}
36+
37+
@Override
38+
public boolean isAccountNonExpired() {
39+
return true;
40+
}
41+
42+
@Override
43+
public boolean isAccountNonLocked() {
44+
return true;
45+
}
46+
47+
@Override
48+
public boolean isCredentialsNonExpired() {
49+
return true;
50+
}
51+
52+
@Override
53+
public boolean isEnabled() {
54+
return true;
55+
}
56+
}
Lines changed: 8 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,58 +1,24 @@
11
package com.webcalc.user;
22

3-
import org.springframework.security.core.GrantedAuthority;
4-
import org.springframework.security.core.userdetails.UserDetails;
5-
6-
import java.util.Collection;
73
import java.util.UUID;
84

9-
public class User implements UserDetails {
5+
public class User {
106

117
public final UUID id;
12-
13-
private final UserDetails springSecUser;
8+
private final String username;
9+
private final String password;
1410

1511
public User(UUID id, String username, String password) {
1612
this.id = id;
17-
springSecUser = org.springframework.security.core.userdetails.User.builder()
18-
.username(username)
19-
.password(password)
20-
.roles()
21-
.build();
22-
}
23-
24-
@Override
25-
public Collection<? extends GrantedAuthority> getAuthorities() {
26-
return springSecUser.getAuthorities();
27-
}
28-
29-
@Override
30-
public String getPassword() {
31-
return springSecUser.getPassword();
13+
this.username = username;
14+
this.password = password;
3215
}
3316

34-
@Override
3517
public String getUsername() {
36-
return springSecUser.getUsername();
18+
return username;
3719
}
3820

39-
@Override
40-
public boolean isAccountNonExpired() {
41-
return springSecUser.isAccountNonExpired();
42-
}
43-
44-
@Override
45-
public boolean isAccountNonLocked() {
46-
return springSecUser.isAccountNonLocked();
47-
}
48-
49-
@Override
50-
public boolean isCredentialsNonExpired() {
51-
return springSecUser.isCredentialsNonExpired();
52-
}
53-
54-
@Override
55-
public boolean isEnabled() {
56-
return springSecUser.isEnabled();
21+
public String getPassword() {
22+
return password;
5723
}
5824
}

app/src/main/java/com/webcalc/user/WebCalcUserDetailsService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class WebCalcUserDetailsService implements UserDetailsService {
2020
@Override
2121
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
2222
if (users.containsKey(username))
23-
return users.get(username);
23+
return new SpringUserAdapter(users.get(username));
2424
throw new UsernameNotFoundException("User unknown");
2525
}
2626
}

0 commit comments

Comments
 (0)