Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
canifa_note
Project
Project
Details
Activity
Releases
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
Vũ Hoàng Anh
canifa_note
Commits
f37b3454
Commit
f37b3454
authored
May 20, 2024
by
Steven
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: update user access token checks
parent
f54b05a5
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
36 additions
and
8 deletions
+36
-8
user_service.go
server/router/api/v1/user_service.go
+36
-8
No files found.
server/router/api/v1/user_service.go
View file @
f37b3454
...
@@ -346,7 +346,12 @@ func (s *APIV1Service) UpdateUserSetting(ctx context.Context, request *v1pb.Upda
...
@@ -346,7 +346,12 @@ func (s *APIV1Service) UpdateUserSetting(ctx context.Context, request *v1pb.Upda
return
s
.
GetUserSetting
(
ctx
,
&
v1pb
.
GetUserSettingRequest
{})
return
s
.
GetUserSetting
(
ctx
,
&
v1pb
.
GetUserSettingRequest
{})
}
}
func
(
s
*
APIV1Service
)
ListUserAccessTokens
(
ctx
context
.
Context
,
_
*
v1pb
.
ListUserAccessTokensRequest
)
(
*
v1pb
.
ListUserAccessTokensResponse
,
error
)
{
func
(
s
*
APIV1Service
)
ListUserAccessTokens
(
ctx
context
.
Context
,
request
*
v1pb
.
ListUserAccessTokensRequest
)
(
*
v1pb
.
ListUserAccessTokensResponse
,
error
)
{
userID
,
err
:=
ExtractUserIDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid user name: %v"
,
err
)
}
currentUser
,
err
:=
getCurrentUser
(
ctx
,
s
.
Store
)
currentUser
,
err
:=
getCurrentUser
(
ctx
,
s
.
Store
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get current user: %v"
,
err
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get current user: %v"
,
err
)
...
@@ -354,8 +359,11 @@ func (s *APIV1Service) ListUserAccessTokens(ctx context.Context, _ *v1pb.ListUse
...
@@ -354,8 +359,11 @@ func (s *APIV1Service) ListUserAccessTokens(ctx context.Context, _ *v1pb.ListUse
if
currentUser
==
nil
{
if
currentUser
==
nil
{
return
nil
,
status
.
Errorf
(
codes
.
PermissionDenied
,
"permission denied"
)
return
nil
,
status
.
Errorf
(
codes
.
PermissionDenied
,
"permission denied"
)
}
}
if
currentUser
.
ID
!=
userID
{
return
nil
,
status
.
Errorf
(
codes
.
PermissionDenied
,
"permission denied"
)
}
userAccessTokens
,
err
:=
s
.
Store
.
GetUserAccessTokens
(
ctx
,
currentUser
.
ID
)
userAccessTokens
,
err
:=
s
.
Store
.
GetUserAccessTokens
(
ctx
,
user
ID
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to list access tokens: %v"
,
err
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to list access tokens: %v"
,
err
)
}
}
...
@@ -401,17 +409,27 @@ func (s *APIV1Service) ListUserAccessTokens(ctx context.Context, _ *v1pb.ListUse
...
@@ -401,17 +409,27 @@ func (s *APIV1Service) ListUserAccessTokens(ctx context.Context, _ *v1pb.ListUse
}
}
func
(
s
*
APIV1Service
)
CreateUserAccessToken
(
ctx
context
.
Context
,
request
*
v1pb
.
CreateUserAccessTokenRequest
)
(
*
v1pb
.
UserAccessToken
,
error
)
{
func
(
s
*
APIV1Service
)
CreateUserAccessToken
(
ctx
context
.
Context
,
request
*
v1pb
.
CreateUserAccessTokenRequest
)
(
*
v1pb
.
UserAccessToken
,
error
)
{
user
,
err
:=
getCurrentUser
(
ctx
,
s
.
Store
)
userID
,
err
:=
ExtractUserIDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid user name: %v"
,
err
)
}
currentUser
,
err
:=
getCurrentUser
(
ctx
,
s
.
Store
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get current user: %v"
,
err
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get current user: %v"
,
err
)
}
}
if
currentUser
==
nil
{
return
nil
,
status
.
Errorf
(
codes
.
PermissionDenied
,
"permission denied"
)
}
if
currentUser
.
ID
!=
userID
{
return
nil
,
status
.
Errorf
(
codes
.
PermissionDenied
,
"permission denied"
)
}
expiresAt
:=
time
.
Time
{}
expiresAt
:=
time
.
Time
{}
if
request
.
ExpiresAt
!=
nil
{
if
request
.
ExpiresAt
!=
nil
{
expiresAt
=
request
.
ExpiresAt
.
AsTime
()
expiresAt
=
request
.
ExpiresAt
.
AsTime
()
}
}
accessToken
,
err
:=
GenerateAccessToken
(
user
.
Username
,
u
ser
.
ID
,
expiresAt
,
[]
byte
(
s
.
Secret
))
accessToken
,
err
:=
GenerateAccessToken
(
currentUser
.
Username
,
currentU
ser
.
ID
,
expiresAt
,
[]
byte
(
s
.
Secret
))
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to generate access token: %v"
,
err
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to generate access token: %v"
,
err
)
}
}
...
@@ -433,7 +451,7 @@ func (s *APIV1Service) CreateUserAccessToken(ctx context.Context, request *v1pb.
...
@@ -433,7 +451,7 @@ func (s *APIV1Service) CreateUserAccessToken(ctx context.Context, request *v1pb.
}
}
// Upsert the access token to user setting store.
// Upsert the access token to user setting store.
if
err
:=
s
.
UpsertAccessTokenToStore
(
ctx
,
u
ser
,
accessToken
,
request
.
Description
);
err
!=
nil
{
if
err
:=
s
.
UpsertAccessTokenToStore
(
ctx
,
currentU
ser
,
accessToken
,
request
.
Description
);
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to upsert access token to store: %v"
,
err
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to upsert access token to store: %v"
,
err
)
}
}
...
@@ -449,12 +467,22 @@ func (s *APIV1Service) CreateUserAccessToken(ctx context.Context, request *v1pb.
...
@@ -449,12 +467,22 @@ func (s *APIV1Service) CreateUserAccessToken(ctx context.Context, request *v1pb.
}
}
func
(
s
*
APIV1Service
)
DeleteUserAccessToken
(
ctx
context
.
Context
,
request
*
v1pb
.
DeleteUserAccessTokenRequest
)
(
*
emptypb
.
Empty
,
error
)
{
func
(
s
*
APIV1Service
)
DeleteUserAccessToken
(
ctx
context
.
Context
,
request
*
v1pb
.
DeleteUserAccessTokenRequest
)
(
*
emptypb
.
Empty
,
error
)
{
user
,
err
:=
getCurrentUser
(
ctx
,
s
.
Store
)
userID
,
err
:=
ExtractUserIDFromName
(
request
.
Name
)
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
InvalidArgument
,
"invalid user name: %v"
,
err
)
}
currentUser
,
err
:=
getCurrentUser
(
ctx
,
s
.
Store
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get current user: %v"
,
err
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to get current user: %v"
,
err
)
}
}
if
currentUser
==
nil
{
return
nil
,
status
.
Errorf
(
codes
.
PermissionDenied
,
"permission denied"
)
}
if
currentUser
.
ID
!=
userID
{
return
nil
,
status
.
Errorf
(
codes
.
PermissionDenied
,
"permission denied"
)
}
userAccessTokens
,
err
:=
s
.
Store
.
GetUserAccessTokens
(
ctx
,
u
ser
.
ID
)
userAccessTokens
,
err
:=
s
.
Store
.
GetUserAccessTokens
(
ctx
,
currentU
ser
.
ID
)
if
err
!=
nil
{
if
err
!=
nil
{
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to list access tokens: %v"
,
err
)
return
nil
,
status
.
Errorf
(
codes
.
Internal
,
"failed to list access tokens: %v"
,
err
)
}
}
...
@@ -466,7 +494,7 @@ func (s *APIV1Service) DeleteUserAccessToken(ctx context.Context, request *v1pb.
...
@@ -466,7 +494,7 @@ func (s *APIV1Service) DeleteUserAccessToken(ctx context.Context, request *v1pb.
updatedUserAccessTokens
=
append
(
updatedUserAccessTokens
,
userAccessToken
)
updatedUserAccessTokens
=
append
(
updatedUserAccessTokens
,
userAccessToken
)
}
}
if
_
,
err
:=
s
.
Store
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
if
_
,
err
:=
s
.
Store
.
UpsertUserSetting
(
ctx
,
&
storepb
.
UserSetting
{
UserId
:
u
ser
.
ID
,
UserId
:
currentU
ser
.
ID
,
Key
:
storepb
.
UserSettingKey_ACCESS_TOKENS
,
Key
:
storepb
.
UserSettingKey_ACCESS_TOKENS
,
Value
:
&
storepb
.
UserSetting_AccessTokens
{
Value
:
&
storepb
.
UserSetting_AccessTokens
{
AccessTokens
:
&
storepb
.
AccessTokensUserSetting
{
AccessTokens
:
&
storepb
.
AccessTokensUserSetting
{
...
...
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