Skip to content

Commit eed8feb

Browse files
committed
encoding password.
1 parent 38df267 commit eed8feb

File tree

4 files changed

+35
-16
lines changed

4 files changed

+35
-16
lines changed
Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package com.demo.bankapp.configuration;
22

3+
import org.springframework.context.annotation.Bean;
34
import org.springframework.context.annotation.Configuration;
5+
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
6+
import org.springframework.security.crypto.password.PasswordEncoder;
47

58
@Configuration
69
public class SecurityConfig {
710

8-
// @Bean
9-
// public PasswordEncoder passwordEncoder() {
10-
// return new BCryptPasswordEncoder();
11-
// }
11+
@Bean
12+
public PasswordEncoder passwordEncoder() {
13+
return new BCryptPasswordEncoder();
14+
}
1215

1316

1417
}

BankApplicationBackend/src/main/java/com/demo/bankapp/controller/UserController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public Resource<User> login(@RequestBody LoginRequest request) {
7373
throw new BadRequestException("Invalid credentials.");
7474
}
7575

76-
User user = userService.login(request);
76+
User user = userService.login(request.getUsername(), request.getPassword());
7777
return assembler.toResource(user);
7878
}
7979

BankApplicationBackend/src/main/java/com/demo/bankapp/service/abstractions/IUserService.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@
88
public interface IUserService {
99

1010
List<User> findAll();
11-
11+
1212
User findByUserName(String username);
13-
13+
1414
User findByTcno(String tcno);
15-
15+
1616
User createNewUser(User user);
17-
18-
User login(LoginRequest request);
17+
18+
User login(String username, String password);
1919

2020
}

BankApplicationBackend/src/main/java/com/demo/bankapp/service/concretions/UserService.java

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
import java.util.List;
44

55
import org.springframework.beans.factory.annotation.Autowired;
6+
import org.springframework.security.crypto.password.PasswordEncoder;
67
import org.springframework.stereotype.Service;
78

89
import com.demo.bankapp.exception.BadCredentialsException;
910
import com.demo.bankapp.exception.UserNotFoundException;
1011
import com.demo.bankapp.model.User;
1112
import com.demo.bankapp.repository.UserRepository;
12-
import com.demo.bankapp.request.LoginRequest;
1313
import com.demo.bankapp.service.abstractions.IUserService;
1414

1515
@Service
@@ -18,24 +18,27 @@ public class UserService implements IUserService {
1818
@Autowired
1919
private UserRepository repository;
2020

21+
@Autowired
22+
private PasswordEncoder passwordEncoder;
23+
2124
@Override
2225
public List<User> findAll() {
2326
return repository.findAll();
2427
}
2528

2629
@Override
2730
public User createNewUser(User user) {
31+
user.setPassword(passwordEncoder.encode(user.getPassword()));
2832
return repository.save(user);
2933
}
3034

3135
@Override
32-
public User login(LoginRequest request) {
36+
public User login(String username, String password) {
3337

34-
User user = findByUserName(request.getUsername());
38+
User user = findByUserName(username);
39+
String encodedPassword = passwordEncoder.encode(password);
3540

36-
// TODO: Encoding.
37-
// TODO: Stop timing attacks.
38-
if (user.getPassword() == null || !user.getPassword().equals(request.getPassword())) {
41+
if (!encodedPassword.equals(user.getPassword())) {
3942
throw new BadCredentialsException();
4043
}
4144

@@ -62,4 +65,17 @@ public User findByTcno(String tcno) {
6265
return user;
6366
}
6467

68+
// Avoid timing attacks?
69+
// private boolean isEqual(byte[] a, byte[] b) {
70+
// if (a.length != b.length) {
71+
// return false;
72+
// }
73+
//
74+
// int result = 0;
75+
// for (int i = 0; i < a.length; i++) {
76+
// result |= a[i] ^ b[i];
77+
// }
78+
// return result == 0;
79+
// }
80+
6581
}

0 commit comments

Comments
 (0)