mirror of
https://github.com/wgh136/nysoure.git
synced 2025-09-27 12:17:24 +00:00
61 lines
1.3 KiB
Go
61 lines
1.3 KiB
Go
package service
|
|
|
|
import (
|
|
"bytes"
|
|
"encoding/json"
|
|
"net/http"
|
|
"nysoure/server/config"
|
|
"nysoure/server/dao"
|
|
)
|
|
|
|
func checkUserCanUpload(uid uint) (bool, error) {
|
|
user, err := dao.GetUserByID(uid)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
return user.IsAdmin || user.CanUpload, nil
|
|
}
|
|
|
|
func CheckUserIsAdmin(uid uint) (bool, error) {
|
|
user, err := dao.GetUserByID(uid)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
return user.IsAdmin, nil
|
|
}
|
|
|
|
func verifyCfToken(cfToken string) (bool, error) {
|
|
if config.CloudflareTurnstileSecretKey() == "" {
|
|
return true, nil
|
|
}
|
|
if cfToken == "" {
|
|
return false, nil
|
|
}
|
|
client := &http.Client{}
|
|
data, _ := json.Marshal(map[string]string{
|
|
"secret": config.CloudflareTurnstileSecretKey(),
|
|
"response": cfToken,
|
|
})
|
|
reader := bytes.NewReader(data)
|
|
resp, err := client.Post("https://challenges.cloudflare.com/turnstile/v0/siteverify", "application/json", reader)
|
|
if err != nil {
|
|
return false, err
|
|
}
|
|
defer resp.Body.Close()
|
|
if resp.StatusCode != http.StatusOK {
|
|
return false, nil
|
|
}
|
|
var result map[string]interface{}
|
|
if err := json.NewDecoder(resp.Body).Decode(&result); err != nil {
|
|
return false, err
|
|
}
|
|
if result["success"] == nil {
|
|
return false, nil
|
|
}
|
|
if result["success"].(bool) {
|
|
return true, nil
|
|
} else {
|
|
return false, nil
|
|
}
|
|
}
|