overflow_proxy_service/proxy/member/member_service.go
2017-06-05 19:16:03 +09:00

155 lines
3.2 KiB
Go

package member
import (
"encoding/json"
"git.loafle.net/overflow/overflow_proxy_service/proxy"
"log"
"git.loafle.net/overflow/overflow_proxy_service/proxy/apikey"
"git.loafle.net/overflow/overflow_proxy_service/proxy/keystore"
"git.loafle.net/overflow/encryption_go"
)
type Member struct {
Id json.Number `json:"id,Number,omitempty"`
Email string `json:"email"`
PwSalt string `json:"pwSalt"`
Digest string `json:"digest"`
Name string `json:"name"`
Company string `json:"company"`
Phone string `json:"phone"`
AuthorizedDate json.Number `json:"authorizedDate,Number"`
}
type MemberService struct {
}
var TARGET_DAO = "member"
func NewMember() *Member {
return &Member{}
}
func NewMemberService() *MemberService {
return &MemberService{}
}
func (m *MemberService) getMemberMap(mem *Member) map[string]string {
memMap := make(map[string]string)
str, err := json.Marshal(mem)
if err != nil {
log.Fatal("Json Marshal Error: ", err)
}
memMap["com.loafle.overflow.member.model.Member"] = string(str)
return memMap
}
func (m *MemberService) Login(mem *Member) string {
result := m.ReadByEmail()
if result == "" {
return "login reject"
}
temp := Member{}
err := json.Unmarshal([]byte(result), &temp)
if err != nil {
return err.Error()
}
if temp.AuthorizedDate == "" {
return "Not authenticated."
}
b := encryption.Check(mem.PwSalt, temp.PwSalt, temp.Digest)
if !b {
return "login reject"
}
return "login success"
}
func (m *MemberService) Regist(mem *Member) string {
log.Println("Call Regist", mem.Email, mem.PwSalt)
pwSalt, digest, err := encryption.Encrypt(mem.PwSalt)
if err != nil {
log.Fatal("encryption Encrypt Error: ", err)
}
mem.PwSalt = pwSalt
mem.Digest = digest
memMap := m.getMemberMap(mem)
re := proxy.InvokeDB(TARGET_DAO, "create", memMap)
return re
}
func (m *MemberService) ReadByEmail(mem *Member) string {
log.Println("Call ReadByEmail", mem.Email)
memMap := m.getMemberMap()
re := proxy.InvokeDB(TARGET_DAO, "findByEmail", memMap)
return re
}
func (m *MemberService) Read(mem *Member) string {
log.Println("Call Read", mem.Email)
// Todo Call DB Gateway
mem.Digest = "qwer5795"
//memMap := m.getMemberMap()
mm := make(map[string]string)
mm["id"] = string(mem.Id)
log.Println("Read Member", m)
re := proxy.InvokeDB(TARGET_DAO, "find", mm)
return re
}
func (m *MemberService) Modify(mem *Member) string {
log.Println("Call Modify", mem.Email, "::", mem.PwSalt)
// Todo Call DB Gateway
mem.Digest = "read"
memMap := m.getMemberMap()
re := proxy.InvokeDB(TARGET_DAO, "update", memMap)
return re
}
func (m *MemberService) Remove(mem *Member) string {
log.Println("Call Remove", mem.Email)
// Todo Call DB Gateway
//m.Digest = "read"
memMap := m.getMemberMap()
re := proxy.InvokeDB(TARGET_DAO, "delete", memMap)
return re
}
func (m *MemberService) GetModel() (interface{}) {
return NewMember()
}
func (m *MemberService) EmailConfirm() string {
ks := keystore.NewKeyStoreSerivce()
key, err := ks.CreateKey()
if err != nil {
return ""
}
log.Println(key)
ak := apikey.NewApiKeyService()
out, err := ak.SaveApikey(nil)
if err != nil {
return ""
}
log.Println(out)
return "";
}