forked from knadh/otpgateway
-
Notifications
You must be signed in to change notification settings - Fork 1
/
provider.go
62 lines (49 loc) · 2.16 KB
/
provider.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package otpgateway
import "github.com/knadh/otpgateway/models"
// ProviderConf represents the common confoguration types for a Provider.
type ProviderConf struct {
Template string `mapstructure:"template"`
Subject string `mapstructure:"subject"`
Config string `mapstructure:"config"`
}
// NewProvider represents an initialisation function that takes
// an arbitrary JSON encoded configuration set and returns an
// instance of a Provider.
type NewProvider func(jsonCfg []byte) (Provider, error)
// Provider is an interface for a generic messaging backend,
// for instance, e-mail, SMS etc.
type Provider interface {
// ID returns the name of the Provider.
ID() string
// ChannelName returns the name of the channel the provider is
// validating, for example "SMS" or "E-mail". This is displayed on
// web views.
ChannelName() string
// ChannelDesc returns the help text that is shown to the end users describing
// how the Provider handles OTP verification.
// Eg: "We've sent a 6 digit code to your phone. Enter that here to verify
// your phone number"
ChannelDesc() string
// AddressName returns the name or label of the address for this provider.
// For example "E-mail" for an e-mail provider or "Phone number" for an SMS provider.
AddressName() string
// AddressDesc returns the help text that is shown to the end users when
// they're asked to enter their addresses (eg: e-mail or phone), if the OTP
// registered without an address.
AddressDesc() string
// ValidateAddress validates the 'to' address the Provider
// is supposed to send the OTP to, for instance, an e-mail
// or a phone number.
ValidateAddress(to string) error
// Push pushes a message. Depending on the the Provider,
// implementation, this can either cause the message to
// be sent immediately or be queued waiting for a Flush().
Push(otp models.OTP, subject string, body []byte) error
// MaxAddressLen returns the maximum allowed length of the 'to' address.
MaxAddressLen() int
// MaxOTPLen returns the maximum allowed length of the OTP value.
MaxOTPLen() int
// MaxBodyLen returns the maximum permitted length of the text
// that can be sent by the Provider.
MaxBodyLen() int
}