auth.go 836 B

123456789101112131415161718192021222324252627282930313233
  1. package auth
  2. import (
  3. log "github.com/sirupsen/logrus"
  4. "pmail/dto"
  5. "pmail/models"
  6. "pmail/mysql"
  7. "strings"
  8. )
  9. // HasAuth 检查当前用户是否有某个邮件的auth
  10. func HasAuth(ctx *dto.Context, email *models.Email) bool {
  11. // 获取当前用户的auth
  12. var auth []models.UserAuth
  13. err := mysql.Instance.Select(&auth, mysql.WithContext(ctx, "select * from user_auth where user_id = ?"), ctx.UserInfo.ID)
  14. if err != nil {
  15. log.WithContext(ctx).Errorf("SQL error:%+v", err)
  16. return false
  17. }
  18. var hasAuth bool
  19. for _, userAuth := range auth {
  20. if userAuth.EmailAccount == "*" {
  21. hasAuth = true
  22. break
  23. } else if strings.Contains(email.Bcc, ctx.UserInfo.Account) || strings.Contains(email.Cc, ctx.UserInfo.Account) || strings.Contains(email.To, ctx.UserInfo.Account) {
  24. hasAuth = true
  25. break
  26. }
  27. }
  28. return hasAuth
  29. }