Skip to content

Commit 62b7ab5

Browse files
author
fatih.dogmus
committed
UserDetails kısmının veri tabanından yapılması sağlandı
1 parent 19d2dee commit 62b7ab5

File tree

16 files changed

+261
-81
lines changed

16 files changed

+261
-81
lines changed

src/main/java/yte/intern/security/SecurityApplication.java

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,15 @@
33
import lombok.RequiredArgsConstructor;
44
import org.springframework.boot.SpringApplication;
55
import org.springframework.boot.autoconfigure.SpringBootApplication;
6-
import yte.intern.security.security.util.DatabasePopulator;
7-
8-
import javax.annotation.PostConstruct;
96

107
@SpringBootApplication
118
@RequiredArgsConstructor
129
public class SecurityApplication {
1310

14-
private final DatabasePopulator databasePopulator;
1511

1612
public static void main(String[] args) {
1713
SpringApplication.run(SecurityApplication.class, args);
1814
}
1915

20-
@PostConstruct
21-
public void initSecurityData() {
22-
databasePopulator.populateDatabaseAfterInit();
23-
}
2416

2517
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package yte.intern.security.controller;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import org.springframework.security.access.prepost.PreAuthorize;
5+
import org.springframework.web.bind.annotation.PostMapping;
6+
import org.springframework.web.bind.annotation.RequestBody;
7+
import org.springframework.web.bind.annotation.RestController;
8+
import yte.intern.security.dto.LoginRequest;
9+
import yte.intern.security.service.LoginService;
10+
11+
@RestController
12+
@RequiredArgsConstructor
13+
public class LoginController {
14+
15+
private final LoginService loginService;
16+
17+
@PostMapping("/customLogin")
18+
@PreAuthorize("permitAll()")
19+
public String login(@RequestBody LoginRequest loginRequest) {
20+
return loginService.login(loginRequest);
21+
}
22+
}

src/main/java/yte/intern/security/controller/TestController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public String user() {
1919
}
2020

2121
@GetMapping("/admin")
22-
@PreAuthorize("hasAuthority('ADMIN') && hasRole('ADMIN')")
22+
@PreAuthorize("hasAuthority('ADMIN')")
2323
public String admin() {
2424
return "Ben adminim!";
2525
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package yte.intern.security.controller;
2+
3+
import lombok.RequiredArgsConstructor;
4+
import org.springframework.security.access.prepost.PreAuthorize;
5+
import org.springframework.web.bind.annotation.PostMapping;
6+
import org.springframework.web.bind.annotation.RequestBody;
7+
import org.springframework.web.bind.annotation.RestController;
8+
import yte.intern.security.dto.AddUserDTO;
9+
import yte.intern.security.service.UserService;
10+
11+
@RestController
12+
@RequiredArgsConstructor
13+
public class UserController {
14+
15+
private final UserService userService;
16+
17+
@PostMapping("/addUser")
18+
@PreAuthorize("permitAll()")
19+
public String addUser(@RequestBody AddUserDTO addUserDTO) {
20+
return userService.addUser(addUserDTO);
21+
}
22+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package yte.intern.security.dto;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
6+
import java.util.List;
7+
8+
@Getter
9+
@Setter
10+
public class AddUserDTO {
11+
12+
private String username;
13+
private String password;
14+
15+
private List<String> authorities;
16+
17+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package yte.intern.security.dto;
2+
3+
import lombok.Getter;
4+
import lombok.Setter;
5+
6+
@Getter
7+
@Setter
8+
public class LoginRequest {
9+
10+
private String username;
11+
private String password;
12+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package yte.intern.security.entity;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
6+
import lombok.Setter;
7+
import org.springframework.security.core.GrantedAuthority;
8+
9+
import javax.persistence.Entity;
10+
import javax.persistence.GeneratedValue;
11+
import javax.persistence.Id;
12+
import javax.persistence.ManyToMany;
13+
import java.util.Set;
14+
15+
@Entity
16+
@Getter
17+
@Setter
18+
@AllArgsConstructor
19+
@NoArgsConstructor
20+
public class Authority implements GrantedAuthority {
21+
22+
@Id
23+
@GeneratedValue
24+
private Long id;
25+
26+
@ManyToMany(mappedBy = "authorities")
27+
private Set<Users> users;
28+
29+
private String authority;
30+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package yte.intern.security.entity;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
6+
import lombok.Setter;
7+
import org.springframework.security.core.userdetails.UserDetails;
8+
9+
import javax.persistence.*;
10+
import java.util.Set;
11+
12+
@Entity
13+
@AllArgsConstructor
14+
@Getter
15+
@Setter
16+
@NoArgsConstructor
17+
public class Users implements UserDetails {
18+
19+
20+
@Id
21+
@GeneratedValue
22+
private Long id;
23+
24+
private String username;
25+
private String password;
26+
27+
@ManyToMany(fetch = FetchType.EAGER)
28+
@JoinTable(
29+
name = "USER_AUTHORITIES",
30+
joinColumns = @JoinColumn(name = "user_id"),
31+
inverseJoinColumns = @JoinColumn(name = "authority_id")
32+
)
33+
private Set<Authority> authorities;
34+
35+
private boolean isAccountNonExpired;
36+
private boolean isAccountNonLocked;
37+
private boolean isCredentialsNonExpired;
38+
private boolean isEnabled;
39+
40+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package yte.intern.security.repository;
2+
3+
import org.springframework.data.jpa.repository.JpaRepository;
4+
import yte.intern.security.entity.Authority;
5+
6+
public interface AuthorityRepository extends JpaRepository<Authority, Long> {
7+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package yte.intern.security.repository;
2+
3+
import org.springframework.data.jpa.repository.JpaRepository;
4+
import yte.intern.security.entity.Users;
5+
6+
public interface UserRepository extends JpaRepository<Users, Long> {
7+
Users findByUsername(String username);
8+
}

0 commit comments

Comments
 (0)