FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
battlr/clientidmiddleware.go at master · some-programs/battlr · GitHub
some-programs
/
battlr
Public
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Issues
0
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Issues
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
battlr
/
clientidmiddleware.go
Copy path
More file actions
More file actions
Latest commit
History
History
History
66 lines (56 loc) · 1.23 KB
Breadcrumbs
battlr
/
clientidmiddleware.go
Copy path
File metadata and controls
66 lines (56 loc) · 1.23 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package
main
import
(
"context"
"net/http"
"time"
"github.com/rs/xid"
)
// clientIDMiddleware .
type
clientIDMiddleware
struct
{
h
http.
Handler
}
type
clientIDContextKey
string
var
ClientIDContextKey
=
clientIDContextKey
(
"clientid"
)
func
(
b
clientIDMiddleware
)
ServeHTTP
(
w
http.
ResponseWriter
,
r
*
http.
Request
) {
var
id
string
cookies
:=
r
.
Cookies
()
for
_
,
c
:=
range
cookies
{
if
c
.
Name
==
"battlr-cid"
{
_
,
err
:=
xid
.
FromString
(
c
.
Value
)
if
err
==
nil
{
id
=
c
.
Value
break
}
}
}
if
id
==
""
{
id
=
xid
.
New
().
String
()
}
http
.
SetCookie
(
w
,
&
http.
Cookie
{
Name
:
"battlr-cid"
,
Value
:
id
,
Expires
:
time
.
Now
().
Add
(
365
*
24
*
time
.
Hour
),
Path
:
"/"
,
SameSite
:
http
.
SameSiteLaxMode
,
HttpOnly
:
true
,
})
ctx
:=
r
.
Context
()
ctx
=
context
.
WithValue
(
ctx
,
ClientIDContextKey
,
id
)
r
=
r
.
WithContext
(
ctx
)
b
.
h
.
ServeHTTP
(
w
,
r
)
}
func
ClientIDMiddleware
()
func
(
h
http.
Handler
)
clientIDMiddleware
{
fn
:=
func
(
h
http.
Handler
)
clientIDMiddleware
{
return
clientIDMiddleware
{
h
:
h
}
}
return
fn
}
func
getClientID
(
ctx
context.
Context
)
string
{
var
clientID
string
if
v
:=
ctx
.
Value
(
ClientIDContextKey
);
v
!=
nil
{
if
v
,
ok
:=
v
.(
string
);
ok
{
clientID
=
v
}
}
return
"cookie:"
+
clientID
}
Back
|
FazBrowse Home
|
New Git URL