34 lines
836 B
Go
34 lines
836 B
Go
package auth
|
|
|
|
import (
|
|
log "github.com/sirupsen/logrus"
|
|
"pmail/dto"
|
|
"pmail/models"
|
|
"pmail/mysql"
|
|
"strings"
|
|
)
|
|
|
|
// HasAuth 检查当前用户是否有某个邮件的auth
|
|
func HasAuth(ctx *dto.Context, email *models.Email) bool {
|
|
// 获取当前用户的auth
|
|
var auth []models.UserAuth
|
|
err := mysql.Instance.Select(&auth, mysql.WithContext(ctx, "select * from user_auth where user_id = ?"), ctx.UserInfo.ID)
|
|
if err != nil {
|
|
log.WithContext(ctx).Errorf("SQL error:%+v", err)
|
|
return false
|
|
}
|
|
|
|
var hasAuth bool
|
|
for _, userAuth := range auth {
|
|
if userAuth.EmailAccount == "*" {
|
|
hasAuth = true
|
|
break
|
|
} else if strings.Contains(email.Bcc, ctx.UserInfo.Account) || strings.Contains(email.Cc, ctx.UserInfo.Account) || strings.Contains(email.To, ctx.UserInfo.Account) {
|
|
hasAuth = true
|
|
break
|
|
}
|
|
}
|
|
|
|
return hasAuth
|
|
}
|