Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
J
java-jwt
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Phùng Quốc Toàn
java-jwt
Commits
1d64944a
Commit
1d64944a
authored
Apr 21, 2025
by
Phùng Quốc Toàn
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
feat: add permission
parent
7a114ddc
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
184 additions
and
22 deletions
+184
-22
ApplicationInitConfig.java
.../identityservice/configuration/ApplicationInitConfig.java
+3
-6
PermissionController.java
...eria/identityservice/controller/PermissionController.java
+44
-0
PermissionRequest.java
...vteria/identityservice/dto/request/PermissionRequest.java
+14
-0
PermissionResponse.java
...eria/identityservice/dto/response/PermissionResponse.java
+4
-0
UserResponse.java
...m/devteria/identityservice/dto/response/UserResponse.java
+2
-1
Permission.java
.../java/com/devteria/identityservice/entity/Permission.java
+19
-0
Role.java
src/main/java/com/devteria/identityservice/entity/Role.java
+25
-0
User.java
src/main/java/com/devteria/identityservice/entity/User.java
+4
-5
PermissionMapper.java
...com/devteria/identityservice/mapper/PermissionMapper.java
+14
-0
PermissionRepository.java
...eria/identityservice/repository/PermissionRepository.java
+10
-0
AuthenticationService.java
...vteria/identityservice/service/AuthenticationService.java
+4
-5
PermissionService.java
...m/devteria/identityservice/service/PermissionService.java
+38
-0
UserService.java
...ava/com/devteria/identityservice/service/UserService.java
+3
-5
No files found.
src/main/java/com/devteria/identityservice/configuration/ApplicationInitConfig.java
View file @
1d64944a
package
com
.
devteria
.
identityservice
.
configuration
;
import
com.devteria.identityservice.entity.User
;
import
com.devteria.identityservice.enums.Role
;
import
com.devteria.identityservice.repository.UserRepository
;
import
lombok.AccessLevel
;
import
lombok.RequiredArgsConstructor
;
...
...
@@ -12,8 +11,6 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
java.util.HashSet
;
@Configuration
@RequiredArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
,
makeFinal
=
true
)
...
...
@@ -26,13 +23,13 @@ public class ApplicationInitConfig {
ApplicationRunner
runner
(
UserRepository
userRepository
)
{
return
args
->
{
if
(!
userRepository
.
existsByUsername
(
"admin"
))
{
var
roles
=
new
HashSet
<
String
>();
roles
.
add
(
Role
.
ADMIN
.
name
());
// var roles = new HashSet<
>();
//
roles.add(Role.ADMIN.name());
User
user
=
User
.
builder
()
.
username
(
"admin"
)
.
password
(
passwordEncoder
.
encode
(
"admin"
))
.
roles
(
roles
)
//
.roles(roles)
.
build
();
userRepository
.
save
(
user
);
...
...
src/main/java/com/devteria/identityservice/controller/PermissionController.java
0 → 100644
View file @
1d64944a
package
com
.
devteria
.
identityservice
.
controller
;
import
com.devteria.identityservice.dto.request.ApiResponse
;
import
com.devteria.identityservice.dto.request.PermissionRequest
;
import
com.devteria.identityservice.dto.response.PermissionResponse
;
import
com.devteria.identityservice.service.PermissionService
;
import
lombok.AccessLevel
;
import
lombok.RequiredArgsConstructor
;
import
lombok.experimental.FieldDefaults
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.web.bind.annotation.*
;
import
java.util.List
;
@RestController
@RequestMapping
(
"/permissions"
)
@RequiredArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
,
makeFinal
=
true
)
@Slf4j
public
class
PermissionController
{
PermissionService
permissionService
;
@PostMapping
ApiResponse
<
PermissionResponse
>
create
(
@RequestBody
PermissionRequest
request
)
{
return
ApiResponse
.<
PermissionResponse
>
builder
()
.
result
(
permissionService
.
create
(
request
))
.
build
();
}
@GetMapping
ApiResponse
<
List
<
PermissionResponse
>>
getAll
()
{
return
ApiResponse
.<
List
<
PermissionResponse
>>
builder
()
.
result
(
permissionService
.
getAll
())
.
build
();
}
@DeleteMapping
ApiResponse
<
String
>
delete
(
@RequestParam
String
permission
)
{
permissionService
.
delete
(
permission
);
return
ApiResponse
.<
String
>
builder
()
.
result
(
"Permission deleted successfully"
)
.
build
();
}
}
src/main/java/com/devteria/identityservice/dto/request/PermissionRequest.java
0 → 100644
View file @
1d64944a
package
com
.
devteria
.
identityservice
.
dto
.
request
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
public
class
PermissionRequest
{
String
name
;
String
description
;
}
src/main/java/com/devteria/identityservice/dto/response/PermissionResponse.java
0 → 100644
View file @
1d64944a
package
com
.
devteria
.
identityservice
.
dto
.
response
;
public
class
PermissionResponse
{
}
src/main/java/com/devteria/identityservice/dto/response/UserResponse.java
View file @
1d64944a
package
com
.
devteria
.
identityservice
.
dto
.
response
;
import
com.devteria.identityservice.entity.Role
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
...
...
@@ -17,6 +18,6 @@ public class UserResponse {
String
firstName
;
String
lastName
;
LocalDate
dob
;
Set
<
String
>
roles
;
Set
<
Role
>
roles
;
}
src/main/java/com/devteria/identityservice/entity/Permission.java
0 → 100644
View file @
1d64944a
package
com
.
devteria
.
identityservice
.
entity
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.Id
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
@Entity
public
class
Permission
{
@Id
String
name
;
String
description
;
}
src/main/java/com/devteria/identityservice/entity/Role.java
0 → 100644
View file @
1d64944a
package
com
.
devteria
.
identityservice
.
entity
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.ManyToMany
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
import
java.util.Set
;
@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
)
@Entity
public
class
Role
{
@Id
String
name
;
String
description
;
@ManyToMany
Set
<
Permission
>
permissions
;
}
src/main/java/com/devteria/identityservice/entity/User.java
View file @
1d64944a
package
com
.
devteria
.
identityservice
.
entity
;
import
jakarta.persistence.Entity
;
import
jakarta.persistence.GeneratedValue
;
import
jakarta.persistence.GenerationType
;
import
jakarta.persistence.Id
;
import
jakarta.persistence.*
;
import
lombok.*
;
import
lombok.experimental.FieldDefaults
;
...
...
@@ -26,6 +23,8 @@ public class User {
String
firstName
;
String
lastName
;
LocalDate
dob
;
Set
<
String
>
roles
;
@ManyToMany
Set
<
Role
>
roles
;
}
src/main/java/com/devteria/identityservice/mapper/PermissionMapper.java
0 → 100644
View file @
1d64944a
package
com
.
devteria
.
identityservice
.
mapper
;
import
com.devteria.identityservice.dto.request.PermissionRequest
;
import
com.devteria.identityservice.dto.response.PermissionResponse
;
import
com.devteria.identityservice.entity.Permission
;
import
org.mapstruct.Mapper
;
@Mapper
(
componentModel
=
"spring"
)
public
interface
PermissionMapper
{
Permission
toPermission
(
PermissionRequest
permissionRequest
);
PermissionResponse
toPermissionResponse
(
Permission
permission
);
}
src/main/java/com/devteria/identityservice/repository/PermissionRepository.java
0 → 100644
View file @
1d64944a
package
com
.
devteria
.
identityservice
.
repository
;
import
com.devteria.identityservice.entity.Permission
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
@Repository
public
interface
PermissionRepository
extends
JpaRepository
<
Permission
,
String
>
{
}
src/main/java/com/devteria/identityservice/service/AuthenticationService.java
View file @
1d64944a
...
...
@@ -22,7 +22,6 @@ import org.springframework.beans.factory.annotation.Value;
import
org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.CollectionUtils
;
import
java.text.ParseException
;
import
java.time.Instant
;
...
...
@@ -104,10 +103,10 @@ public class AuthenticationService {
private
String
buildScope
(
User
user
)
{
StringJoiner
stringJoiner
=
new
StringJoiner
(
""
);
if
(!
CollectionUtils
.
isEmpty
(
user
.
getRoles
()))
{
user
.
getRoles
().
forEach
(
stringJoiner:
:
add
);
}
//
//
if (!CollectionUtils.isEmpty(user.getRoles())) {
//
user.getRoles().forEach(stringJoiner::add);
//
}
return
stringJoiner
.
toString
();
}
...
...
src/main/java/com/devteria/identityservice/service/PermissionService.java
0 → 100644
View file @
1d64944a
package
com
.
devteria
.
identityservice
.
service
;
import
com.devteria.identityservice.dto.request.PermissionRequest
;
import
com.devteria.identityservice.dto.response.PermissionResponse
;
import
com.devteria.identityservice.entity.Permission
;
import
com.devteria.identityservice.mapper.PermissionMapper
;
import
com.devteria.identityservice.repository.PermissionRepository
;
import
lombok.AccessLevel
;
import
lombok.RequiredArgsConstructor
;
import
lombok.experimental.FieldDefaults
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
@Service
@RequiredArgsConstructor
@Slf4j
@FieldDefaults
(
level
=
AccessLevel
.
PRIVATE
,
makeFinal
=
true
)
public
class
PermissionService
{
PermissionRepository
permissionRepository
;
PermissionMapper
permissionMapper
;
public
PermissionResponse
create
(
PermissionRequest
request
)
{
Permission
permission
=
permissionMapper
.
toPermission
(
request
);
permission
=
permissionRepository
.
save
(
permission
);
return
permissionMapper
.
toPermissionResponse
(
permission
);
}
public
List
<
PermissionResponse
>
getAll
()
{
var
permissions
=
permissionRepository
.
findAll
();
return
permissions
.
stream
().
map
(
permissionMapper:
:
toPermissionResponse
).
toList
();
}
public
void
delete
(
String
permission
)
{
permissionRepository
.
deleteById
(
permission
);
}
}
src/main/java/com/devteria/identityservice/service/UserService.java
View file @
1d64944a
...
...
@@ -4,7 +4,6 @@ import com.devteria.identityservice.dto.request.UserCreationRequest;
import
com.devteria.identityservice.dto.request.UserUpdateRequest
;
import
com.devteria.identityservice.dto.response.UserResponse
;
import
com.devteria.identityservice.entity.User
;
import
com.devteria.identityservice.enums.Role
;
import
com.devteria.identityservice.exception.AppException
;
import
com.devteria.identityservice.exception.ErrorCode
;
import
com.devteria.identityservice.mapper.UserMapper
;
...
...
@@ -19,7 +18,6 @@ import org.springframework.security.core.context.SecurityContextHolder;
import
org.springframework.security.crypto.password.PasswordEncoder
;
import
org.springframework.stereotype.Service
;
import
java.util.HashSet
;
import
java.util.List
;
@Service
...
...
@@ -38,9 +36,9 @@ public class UserService {
User
user
=
userMapper
.
toUser
(
request
);
user
.
setPassword
(
passwordEncoder
.
encode
(
request
.
getPassword
()));
HashSet
<
String
>
roles
=
new
HashSet
<>();
roles
.
add
(
Role
.
USER
.
name
());
user
.
setRoles
(
roles
);
//
HashSet<String> roles = new HashSet<>();
//
roles.add(Role.USER.name());
//
user.setRoles(roles);
return
userMapper
.
toUserResponse
(
userRepository
.
save
(
user
));
}
...
...
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