auth

Paddy 2015-05-17 Parent:37a42585660e

170:bdb83e88e1da Go to Latest

auth/profile_verification.go

Instantiate a login verification handler. When starting up the authd binary, get our login verification handler set up. We're going to use environment variables to detect if NSQ is configured. If it is, that'll be used. Otherwise, fall back on logging to stdout.

History
paddy@169 1 package auth
paddy@169 2
paddy@169 3 import (
paddy@169 4 "log"
paddy@169 5 "time"
paddy@169 6
paddy@169 7 "code.secondbit.org/events.hg"
paddy@169 8 )
paddy@169 9
paddy@169 10 const (
paddy@169 11 EventSystem = "authd"
paddy@169 12 EventModelLogin = "login"
paddy@169 13 EventActionSendVerification = "send_verification"
paddy@169 14 EventTopicLoginVerification = "login_verification"
paddy@169 15 )
paddy@169 16
paddy@169 17 type loginVerificationNotifier interface {
paddy@169 18 SendLoginVerification(login Login)
paddy@169 19 }
paddy@169 20
paddy@169 21 type stdoutNotifier struct{}
paddy@169 22
paddy@169 23 func NewStdoutNotifier() stdoutNotifier {
paddy@169 24 return stdoutNotifier{}
paddy@169 25 }
paddy@169 26
paddy@169 27 func (s stdoutNotifier) SendLoginVerification(login Login) {
paddy@169 28 log.Printf("Use \"%s\" as the verification code for \"%s\"\n", login.Verification, login.Value)
paddy@169 29 }
paddy@169 30
paddy@169 31 type nsqNotifier struct {
paddy@169 32 *events.NSQPublisher
paddy@169 33 }
paddy@169 34
paddy@169 35 func NewNSQNotifier(address string) (*nsqNotifier, error) {
paddy@169 36 p, err := events.NewNSQPublisher(EventSystem+"/"+Version, address)
paddy@169 37 return &nsqNotifier{p}, err
paddy@169 38 }
paddy@169 39
paddy@169 40 func (n *nsqNotifier) SendLoginVerification(login Login) {
paddy@169 41 evt := events.Event{
paddy@169 42 System: EventSystem,
paddy@169 43 Model: EventModelLogin,
paddy@169 44 ID: login.Value,
paddy@169 45 Action: EventActionSendVerification,
paddy@169 46 Timestamp: time.Now(),
paddy@169 47 Data: map[string]string{
paddy@169 48 "verification": login.Verification,
paddy@169 49 },
paddy@169 50 }
paddy@169 51 err := n.Publish(EventTopicLoginVerification, evt)
paddy@169 52 if err != nil {
paddy@169 53 log.Printf("Error sending event: %#+v\n", err)
paddy@169 54 }
paddy@169 55 }