Line data Source code
1 : // Package auth は Gin の Context で認証情報を扱うヘルパを提供します。
2 : package auth
3 :
4 : import "github.com/gin-gonic/gin"
5 :
6 : type key string
7 :
8 : const (
9 : kUserID key = "userID"
10 : kUID key = "UID"
11 : kFirebaseUID key = "firebaseUID"
12 : kEmail key = "email"
13 : )
14 :
15 : // SetUserID はユーザーIDを Gin の Context に設定します。
16 1 : func SetUserID(c *gin.Context, id uint64) {
17 1 : c.Set(string(kUserID), id)
18 1 : }
19 :
20 : // SetFirebaseUID は Firebase UID を設定します。
21 0 : func SetFirebaseUID(c *gin.Context, uid string) {
22 0 : c.Set(string(kUID), uid)
23 0 : c.Set(string(kFirebaseUID), uid)
24 0 : }
25 :
26 : // SetEmail はメールアドレスを設定します。
27 0 : func SetEmail(c *gin.Context, email *string) {
28 0 : c.Set(string(kEmail), email)
29 0 : }
30 :
31 : // UserID は設定されたユーザーIDを取得します。
32 1 : func UserID(c *gin.Context) (uint64, bool) {
33 1 : v, ok := c.Get(string(kUserID))
34 1 : if !ok {
35 0 : return 0, false
36 0 : }
37 1 : id, ok := v.(uint64)
38 1 : return id, ok
39 : }
40 :
41 : // FirebaseUID は設定された Firebase UID を取得します。
42 0 : func FirebaseUID(c *gin.Context) (string, bool) {
43 0 : v, ok := c.Get(string(kFirebaseUID))
44 0 : if !ok {
45 0 : return "", false
46 0 : }
47 0 : s, ok := v.(string)
48 0 : return s, ok
49 : }
50 :
51 : // UID は設定されたUID(互換キー)を取得します。
52 0 : func UID(c *gin.Context) (string, bool) {
53 0 : v, ok := c.Get(string(kUID))
54 0 : if !ok {
55 0 : return "", false
56 0 : }
57 0 : s, ok := v.(string)
58 0 : return s, ok
59 : }
60 :
61 : // Email は設定されたメールアドレスを取得します。
62 0 : func Email(c *gin.Context) (*string, bool) {
63 0 : v, ok := c.Get(string(kEmail))
64 0 : if !ok {
65 0 : return nil, false
66 0 : }
67 0 : if v == nil {
68 0 : return nil, true // セット済みだが nil
69 0 : }
70 0 : email, ok := v.(*string)
71 0 : return email, ok
72 : }
|