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
861eeb7b
Unverified
Commit
861eeb7b
authored
Jan 01, 2023
by
boojack
Committed by
GitHub
Jan 01, 2023
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: add skipper in CSRF (#885)
parent
24b21aa9
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
37 additions
and
5 deletions
+37
-5
server.go
server/server.go
+37
-5
No files found.
server/server.go
View file @
861eeb7b
...
...
@@ -4,6 +4,8 @@ import (
"fmt"
"time"
"github.com/usememos/memos/api"
"github.com/usememos/memos/common"
"github.com/usememos/memos/server/profile"
"github.com/usememos/memos/store"
...
...
@@ -30,6 +32,11 @@ func NewServer(profile *profile.Profile) *Server {
e
.
HideBanner
=
true
e
.
HidePort
=
true
s
:=
&
Server
{
e
:
e
,
Profile
:
profile
,
}
e
.
Use
(
middleware
.
LoggerWithConfig
(
middleware
.
LoggerConfig
{
Format
:
`{"time":"${time_rfc3339}",`
+
`"method":"${method}","uri":"${uri}",`
+
...
...
@@ -37,6 +44,7 @@ func NewServer(profile *profile.Profile) *Server {
}))
e
.
Use
(
middleware
.
CSRFWithConfig
(
middleware
.
CSRFConfig
{
Skipper
:
s
.
OpenAPISkipper
,
TokenLookup
:
"cookie:_csrf"
,
}))
...
...
@@ -59,11 +67,6 @@ func NewServer(profile *profile.Profile) *Server {
}
e
.
Use
(
session
.
Middleware
(
sessions
.
NewCookieStore
(
secret
)))
s
:=
&
Server
{
e
:
e
,
Profile
:
profile
,
}
rootGroup
:=
e
.
Group
(
""
)
s
.
registerRSSRoutes
(
rootGroup
)
...
...
@@ -92,3 +95,32 @@ func NewServer(profile *profile.Profile) *Server {
func
(
server
*
Server
)
Run
()
error
{
return
server
.
e
.
Start
(
fmt
.
Sprintf
(
":%d"
,
server
.
Profile
.
Port
))
}
func
(
server
*
Server
)
OpenAPISkipper
(
c
echo
.
Context
)
bool
{
ctx
:=
c
.
Request
()
.
Context
()
path
:=
c
.
Path
()
// Skip auth.
if
common
.
HasPrefixes
(
path
,
"/api/auth"
)
{
return
true
}
// If there is openId in query string and related user is found, then skip auth.
openID
:=
c
.
QueryParam
(
"openId"
)
if
openID
!=
""
{
userFind
:=
&
api
.
UserFind
{
OpenID
:
&
openID
,
}
user
,
err
:=
server
.
Store
.
FindUser
(
ctx
,
userFind
)
if
err
!=
nil
&&
common
.
ErrorCode
(
err
)
!=
common
.
NotFound
{
return
false
}
if
user
!=
nil
{
// Stores userID into context.
c
.
Set
(
getUserIDContextKey
(),
user
.
ID
)
return
true
}
}
return
false
}
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