aboutsummaryrefslogtreecommitdiff
path: root/modules/base
diff options
context:
space:
mode:
authorUnknown <joe2010xtmf@163.com>2014-03-19 12:50:44 -0400
committerUnknown <joe2010xtmf@163.com>2014-03-19 12:50:44 -0400
commit35d473f04ac79990a35499fbf3c4998170e655e1 (patch)
treefca64b6679336766ffc6965f3f09974c9d3da348 /modules/base
parentc6e12d256833095d76bbb5755261507ecbdaada9 (diff)
Finish verify email
Diffstat (limited to 'modules/base')
-rw-r--r--modules/base/conf.go8
-rw-r--r--modules/base/template.go4
-rw-r--r--modules/base/tool.go65
3 files changed, 65 insertions, 12 deletions
diff --git a/modules/base/conf.go b/modules/base/conf.go
index 64c97028..41226459 100644
--- a/modules/base/conf.go
+++ b/modules/base/conf.go
@@ -131,15 +131,15 @@ func newMailService() {
}
}
-func newRegisterService() {
+func newRegisterMailService() {
if !Cfg.MustBool("service", "REGISTER_EMAIL_CONFIRM") {
return
} else if MailService == nil {
- log.Warn("Register Service: Mail Service is not enabled")
+ log.Warn("Register Mail Service: Mail Service is not enabled")
return
}
Service.RegisterEmailConfirm = true
- log.Info("Register Service Enabled")
+ log.Info("Register Mail Service Enabled")
}
func init() {
@@ -177,5 +177,5 @@ func init() {
newService()
newLogService()
newMailService()
- newRegisterService()
+ newRegisterMailService()
}
diff --git a/modules/base/template.go b/modules/base/template.go
index 23d3d277..5268da64 100644
--- a/modules/base/template.go
+++ b/modules/base/template.go
@@ -8,6 +8,7 @@ import (
"container/list"
"fmt"
"html/template"
+ "strings"
"time"
)
@@ -54,4 +55,7 @@ var TemplateFuncs template.FuncMap = map[string]interface{}{
"ActionDesc": ActionDesc,
"DateFormat": DateFormat,
"List": List,
+ "Mail2Domain": func(mail string) string {
+ return "mail." + strings.Split(mail, "@")[1]
+ },
}
diff --git a/modules/base/tool.go b/modules/base/tool.go
index d0b6bfbf..8fabb8c5 100644
--- a/modules/base/tool.go
+++ b/modules/base/tool.go
@@ -36,6 +36,35 @@ func GetRandomString(n int) string {
return string(bytes)
}
+// verify time limit code
+func VerifyTimeLimitCode(data string, minutes int, code string) bool {
+ if len(code) <= 18 {
+ return false
+ }
+
+ // split code
+ start := code[:12]
+ lives := code[12:18]
+ if d, err := StrTo(lives).Int(); err == nil {
+ minutes = d
+ }
+
+ // right active code
+ retCode := CreateTimeLimitCode(data, minutes, start)
+ if retCode == code && minutes > 0 {
+ // check time is expired or not
+ before, _ := DateParse(start, "YmdHi")
+ now := time.Now()
+ if before.Add(time.Minute*time.Duration(minutes)).Unix() > now.Unix() {
+ return true
+ }
+ }
+
+ return false
+}
+
+const TimeLimitCodeLength = 12 + 6 + 40
+
// create a time limit code
// code format: 12 length date time string + 6 minutes string + 40 sha1 encoded string
func CreateTimeLimitCode(data string, minutes int, startInf interface{}) string {
@@ -283,16 +312,24 @@ func DateFormat(t time.Time, format string) string {
return t.Format(format)
}
-type argInt []int
+// convert string to specify type
-func (a argInt) Get(i int, args ...int) (r int) {
- if i >= 0 && i < len(a) {
- r = a[i]
- }
- if len(args) > 0 {
- r = args[0]
+type StrTo string
+
+func (f StrTo) Exist() bool {
+ return string(f) != string(0x1E)
+}
+
+func (f StrTo) Int() (int, error) {
+ v, err := strconv.ParseInt(f.String(), 10, 32)
+ return int(v), err
+}
+
+func (f StrTo) String() string {
+ if f.Exist() {
+ return string(f)
}
- return
+ return ""
}
// convert any type to string
@@ -334,6 +371,18 @@ func ToStr(value interface{}, args ...int) (s string) {
return s
}
+type argInt []int
+
+func (a argInt) Get(i int, args ...int) (r int) {
+ if i >= 0 && i < len(a) {
+ r = a[i]
+ }
+ if len(args) > 0 {
+ r = args[0]
+ }
+ return
+}
+
type Actioner interface {
GetOpType() int
GetActUserName() string