Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
springboot_practice
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Wen Wei Li
springboot_practice
Commits
17484f5e
Commit
17484f5e
authored
Jul 01, 2024
by
Wen Wei Li
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
test
parent
b28e6252
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
94 additions
and
13 deletions
+94
-13
pom.xml
pom.xml
+4
-0
src/main/java/io/prlab/prule/PruleApplication.java
src/main/java/io/prlab/prule/PruleApplication.java
+7
-2
src/main/java/io/prlab/prule/config/OpenApiConfig.java
src/main/java/io/prlab/prule/config/OpenApiConfig.java
+18
-0
src/main/java/io/prlab/prule/config/SecurityConfiguration.java
...ain/java/io/prlab/prule/config/SecurityConfiguration.java
+14
-8
src/main/java/io/prlab/prule/controllers/UserController.java
src/main/java/io/prlab/prule/controllers/UserController.java
+1
-0
src/main/java/io/prlab/prule/entity/AppUser.java
src/main/java/io/prlab/prule/entity/AppUser.java
+12
-0
src/main/java/io/prlab/prule/repositories/AppUserRepository.java
...n/java/io/prlab/prule/repositories/AppUserRepository.java
+2
-2
src/main/java/io/prlab/prule/services/DatabaseUserDetailsService.java
...a/io/prlab/prule/services/DatabaseUserDetailsService.java
+34
-1
src/main/resources/application.properties
src/main/resources/application.properties
+2
-0
No files found.
pom.xml
View file @
17484f5e
...
...
@@ -54,6 +54,10 @@
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-rest
</artifactId>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework.data/spring-data-commons -->
<dependency>
<groupId>
org.springframework.data
</groupId>
...
...
src/main/java/io/prlab/prule/PruleApplication.java
View file @
17484f5e
...
...
@@ -19,8 +19,13 @@ public class PruleApplication implements CommandLineRunner {
this
.
appUserRepository
=
appUserRepository
;
}
public
void
run
(
String
...
args
)
throws
Exception
{
AppUser
userA
=
new
AppUser
(
"andrewli315"
,
"prlab1234"
,
"admin"
);
appUserRepository
.
save
(
userA
);
//AppUser userA = new AppUser("andrewli315", "prlab1234", "admin");
appUserRepository
.
save
(
new
AppUser
(
"user"
,
"$2a$10$NVM0n8ElaRgg7zWO1CxUdei7vWoPg91Lz2aYavh9.f9q0e4bRadue"
,
"USER"
));
// Username: admin, password: admin
appUserRepository
.
save
(
new
AppUser
(
"admin"
,
"$2a$10$8cjz47bjbR4Mn8GMg9IZx.vyjhLXR/SKKMSZ9.mP9vpMu0ssKi8GW"
,
"ADMIN"
));
//appUserRepository.save(userA);
}
public
static
void
main
(
String
[]
args
)
{
...
...
src/main/java/io/prlab/prule/config/OpenApiConfig.java
0 → 100644
View file @
17484f5e
package
io.prlab.prule.config
;
import
io.swagger.v3.oas.models.OpenAPI
;
import
io.swagger.v3.oas.models.info.Info
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
@Configuration
public
class
OpenApiConfig
{
@Bean
public
OpenAPI
AppUserOpenAPI
(){
return
new
OpenAPI
()
.
info
(
new
Info
()
.
title
(
"PRLAB REST API"
)
.
description
(
"App User"
)
.
version
(
"1.0"
));
}
}
src/main/java/io/prlab/prule/config/SecurityConfiguration.java
View file @
17484f5e
package
io.prlab.prule.config
;
import
io.prlab.prule.services.DatabaseUserDetailsService
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.security.config.annotation.
authentication
.
builders
.
AuthenticationManagerBuilder
;
import
org.springframework.security.config.annotation.web.configuration.EnableWebSecurity
;
import
org.springframework.security.core.userdetails.User
;
import
org.springframework.security.core.userdetails.UserDetails
;
...
...
@@ -12,14 +15,17 @@ import org.springframework.security.provisioning.InMemoryUserDetailsManager;
@Configuration
@EnableWebSecurity
public
class
SecurityConfiguration
{
@Bean
public
InMemoryUserDetailsManager
userDetailsService
(){
UserDetails
user
=
User
.
builder
()
.
username
(
"user"
)
.
password
(
passwordEncoder
().
encode
(
"password"
))
.
roles
(
"USER"
)
.
build
();
return
new
InMemoryUserDetailsManager
(
user
);
private
final
DatabaseUserDetailsService
userDetailsService
;
public
SecurityConfiguration
(
DatabaseUserDetailsService
userDetailsService
)
{
this
.
userDetailsService
=
userDetailsService
;
}
public
void
configureGlobal
(
AuthenticationManagerBuilder
auth
)
throws
Exception
{
auth
.
userDetailsService
(
userDetailsService
)
.
passwordEncoder
(
new
BCryptPasswordEncoder
());
}
@Bean
public
PasswordEncoder
passwordEncoder
(){
...
...
src/main/java/io/prlab/prule/controllers/UserController.java
View file @
17484f5e
...
...
@@ -11,6 +11,7 @@ import org.springframework.web.bind.annotation.RestController;
public
class
UserController
{
@Autowired
public
DatabaseUserDetailsService
databaseUserDetailsService
;
@Autowired
private
final
AppUserRepository
repository
;
public
UserController
(
AppUserRepository
repository
)
{
...
...
src/main/java/io/prlab/prule/entity/AppUser.java
View file @
17484f5e
...
...
@@ -13,12 +13,15 @@ public class AppUser {
@Column
(
nullable
=
false
,
updatable
=
false
)
private
Long
id
;
@Setter
@Getter
@Column
(
nullable
=
false
,
unique
=
true
)
private
String
username
;
@Setter
@Getter
@Column
(
nullable
=
false
)
private
String
password
;
@Setter
@Getter
@Column
(
nullable
=
false
)
private
String
role
;
...
...
@@ -30,4 +33,13 @@ public class AppUser {
this
.
password
=
password
;
this
.
role
=
role
;
}
public
String
getPassword
()
{
return
password
;
}
public
String
getRole
()
{
return
role
;
}
}
src/main/java/io/prlab/prule/repositories/AppUserRepository.java
View file @
17484f5e
...
...
@@ -4,9 +4,9 @@ import io.prlab.prule.entity.AppUser;
import
java.util.Optional
;
import
org.springframework.data.repository.CrudRepository
;
import
org.springframework.
stereotype.Repository
;
import
org.springframework.
data.rest.core.annotation.RepositoryRestResource
;
@Repository
@Repository
RestResource
public
interface
AppUserRepository
extends
CrudRepository
<
AppUser
,
Long
>
{
Optional
<
AppUser
>
findByUsername
(
String
username
);
...
...
src/main/java/io/prlab/prule/services/DatabaseUserDetailsService.java
View file @
17484f5e
package
io.prlab.prule.services
;
import
io.prlab.prule.entity.AppUser
;
import
io.prlab.prule.repositories.AppUserRepository
;
import
org.springframework.security.core.userdetails.User.UserBuilder
;
import
org.springframework.security.core.userdetails.UserDetails
;
import
org.springframework.security.core.userdetails.UserDetailsService
;
import
org.springframework.security.core.userdetails.UsernameNotFoundException
;
import
org.springframework.stereotype.Service
;
import
java.util.Optional
;
@Service
public
class
DatabaseUserDetailsService
{
public
class
DatabaseUserDetailsService
implements
UserDetailsService
{
private
final
AppUserRepository
repository
;
public
DatabaseUserDetailsService
(
AppUserRepository
repo
){
this
.
repository
=
repo
;
}
@Override
public
UserDetails
loadUserByUsername
(
String
username
)
throws
UsernameNotFoundException
{
Optional
<
AppUser
>
user
=
repository
.
findByUsername
(
username
);
UserBuilder
builder
=
null
;
if
(
user
.
isPresent
())
{
AppUser
currentUser
=
user
.
get
();
builder
=
org
.
springframework
.
security
.
core
.
userdetails
.
User
.
withUsername
(
username
);
builder
.
password
(
currentUser
.
getPassword
());
builder
.
roles
(
currentUser
.
getRole
());
}
else
{
throw
new
UsernameNotFoundException
(
"User not found."
);
}
return
builder
.
build
();
}
}
src/main/resources/application.properties
View file @
17484f5e
spring.application.name
=
prule
spring.datasource.url
=
jdbc:h2:mem:testdb
spring.jpa.show-sql
=
true
spring.jpa.generate-ddl
=
true
spring.jpa.hibernate.ddl-auto
=
create-drop
spring.h2.console.enabled
=
true
spring.h2.console.path
=
/h2-console
springdoc.api-docs.path
=
/api-docs
...
...
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