cubefs

Форк
0
/
akstore.go 
58 строк · 1.2 Кб
1
package keystore
2

3
import (
4
	"encoding/json"
5
	"fmt"
6
	"regexp"
7

8
	"github.com/cubefs/cubefs/util/caps"
9
)
10

11
type AccessKeyInfo struct {
12
	AccessKey string `json:"access_key"`
13
	ID        string `json:"id"`
14
}
15

16
type AccessKeyCaps struct {
17
	AccessKey string `json:"access_key"`
18
	SecretKey string `json:"secret_key"`
19
	Caps      []byte `json:"caps"`
20
	ID        string `json:"user_id"`
21
}
22

23
func (u *AccessKeyCaps) IsValidCaps() (err error) {
24
	cap := new(caps.Caps)
25
	if err = cap.Init(u.Caps); err != nil {
26
		err = fmt.Errorf("Invalid caps [%s] %s", u.Caps, err.Error())
27
	}
28
	return
29
}
30

31
func (u *AccessKeyCaps) IsValidAK() (err error) {
32
	re := regexp.MustCompile("^[A-Za-z0-9]{16}$")
33
	if !re.MatchString(u.AccessKey) {
34
		err = fmt.Errorf("invalid AccessKey [%s]", u.AccessKey)
35
		return
36
	}
37
	return
38
}
39

40
func (u *AccessKeyCaps) DumpJSONStr() (r string, err error) {
41
	dumpInfo := struct {
42
		AccessKey string `json:"access_key"`
43
		SecretKey string `json:"secret_key"`
44
		Caps      string `json:"caps"`
45
		ID        string `json:"id"`
46
	}{
47
		u.AccessKey,
48
		u.SecretKey,
49
		string(u.Caps),
50
		u.ID,
51
	}
52
	data, err := json.MarshalIndent(dumpInfo, "", "  ")
53
	if err != nil {
54
		return
55
	}
56
	r = string(data)
57
	return
58
}
59

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.