MCPcopy Create free account
hub / github.com/foxcpp/maddy / AuthorizeEmailUse

Function AuthorizeEmailUse

internal/authz/lookup.go:11–44  ·  view source on GitHub ↗
(ctx context.Context, username string, addrs []string, mapping module.Table)

Source from the content-addressed store, hash-verified

9)
10
11func AuthorizeEmailUse(ctx context.Context, username string, addrs []string, mapping module.Table) (bool, error) {
12 var validEmails []string
13
14 if multi, ok := mapping.(module.MultiTable); ok {
15 var err error
16 validEmails, err = multi.LookupMulti(ctx, username)
17 if err != nil {
18 return false, fmt.Errorf("authz: %w", err)
19 }
20 } else {
21 validEmail, ok, err := mapping.Lookup(ctx, username)
22 if err != nil {
23 return false, fmt.Errorf("authz: %w", err)
24 }
25 if ok {
26 validEmails = []string{validEmail}
27 }
28 }
29
30 for _, addr := range addrs {
31 _, domain, err := address.Split(addr)
32 if err != nil {
33 return false, fmt.Errorf("authz: %w", err)
34 }
35
36 for _, ent := range validEmails {
37 if ent == domain || ent == "*" || ent == addr {
38 return true, nil
39 }
40 }
41 }
42
43 return false, nil
44}

Callers 1

authzSenderMethod · 0.92

Calls 3

SplitFunction · 0.92
LookupMultiMethod · 0.65
LookupMethod · 0.65

Tested by

no test coverage detected