48 lines
963 B
Go
48 lines
963 B
Go
package auth
|
|
|
|
import (
|
|
"strconv"
|
|
|
|
"git.lxtend.com/qqbot/constants"
|
|
"git.lxtend.com/qqbot/model"
|
|
"git.lxtend.com/qqbot/sqlite3"
|
|
)
|
|
|
|
func init() {
|
|
authTableCreateSQL := `
|
|
CREATE TABLE IF NOT EXISTS auth (
|
|
id INTEGER PRIMARY KEY AUTOINCREMENT,
|
|
qqid TEXT UNIQUE,
|
|
role INTEGER
|
|
);
|
|
`
|
|
sqlite3.TryCreateTable(authTableCreateSQL)
|
|
}
|
|
|
|
func HasPermission(qqID int64, level constants.PermissionLevel) bool {
|
|
auth, err := getAuth(qqID)
|
|
if err != nil {
|
|
return false
|
|
}
|
|
return auth.Role <= level
|
|
}
|
|
|
|
func SetPermission(qqID int64, level constants.PermissionLevel) error {
|
|
auth := Auth{
|
|
Qqid: strconv.Itoa(int(qqID)),
|
|
Role: level,
|
|
}
|
|
return setAuth(auth)
|
|
}
|
|
|
|
func TryExecHandler(msg model.Message, level constants.PermissionLevel, handler model.Handler) (reply model.Reply) {
|
|
if HasPermission(msg.UserId, level) {
|
|
return handler(msg)
|
|
}
|
|
return model.Reply{
|
|
ReplyMsg: "权限验证失败",
|
|
ReferOriginMsg: true,
|
|
FromMsg: msg,
|
|
}
|
|
}
|