-
Notifications
You must be signed in to change notification settings - Fork 1
/
pwd.go
64 lines (52 loc) · 1.03 KB
/
pwd.go
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
// Copyright 2023 The Yock Authors. All rights reserved.
// Use of this source code is governed by a MIT-style
// license that can be found in the LICENSE file.
package rule
import (
"errors"
"fmt"
"google.golang.org/grpc/metadata"
)
type PwdRule struct {
index string
pwd string
name string
}
var _ Rule = (*PwdRule)(nil)
func NewPwdRule(name, pwd string) *PwdRule {
return &PwdRule{
name: name,
pwd: pwd,
}
}
func (t *PwdRule) Kind() string {
return "pwd"
}
func (t *PwdRule) Index() string {
return t.index
}
func (t *PwdRule) Name() string {
return t.name
}
func (t *PwdRule) String() string {
return fmt.Sprintf(`{"type": "pwd","name": "%s","token": "%s"}`, t.name, t.pwd)
}
func (t *PwdRule) Release() {
t.index = "pwd"
}
func (t *PwdRule) Check(ctx metadata.MD) error {
v, ok := ctx[t.index]
if !ok {
return errors.New("token not found")
}
token := ""
if len(v) > 0 {
token = v[0]
} else {
return errors.New("token not found")
}
if token != t.pwd {
return errors.New("pwd error")
}
return nil
}