Merge branch 'develop' of gitee.com:fusenpack/fusenapi into develop
This commit is contained in:
commit
78d878bc05
@ -1,4 +1,4 @@
|
|||||||
Subject: Please confirm your {{ .CompanyName }} account
|
Subject: Confirm Email Address for {{ .CompanyName }} Account
|
||||||
MIME-version: 1.0
|
MIME-version: 1.0
|
||||||
Content-Type: text/html; charset="UTF-8"
|
Content-Type: text/html; charset="UTF-8"
|
||||||
From: "Fusen Support"
|
From: "Fusen Support"
|
||||||
@ -9,13 +9,13 @@ From: "Fusen Support"
|
|||||||
|
|
||||||
<p>Dear <span style="color: red;">{{.UserName}}</span>,</p>
|
<p>Dear <span style="color: red;">{{.UserName}}</span>,</p>
|
||||||
|
|
||||||
<p>Thank you for choosing {{ .CompanyName }}. To complete the account setup process, please click the button below to confirm your email address:</p>
|
<p>Thank you for choosing to associate your email address with your {{ .CompanyName }} account({{ .PlatformAndID }}) . To complete the process, please click the button below to confirm your email:</p>
|
||||||
|
|
||||||
<a href="{{ .ConfirmationLink }}" target="_blank" style="background-color: #008CBA; color: #FFFFFF; text-decoration: none; padding: 10px 15px; border-radius: 3px; display:inline-block; font-weight: bold;">Confirm Email: {{ .Email }}</a>
|
<a href="{{ .ConfirmationLink }}" target="_blank" style="background-color: #008CBA; color: #FFFFFF; text-decoration: none; padding: 10px 15px; border-radius: 3px; display:inline-block; font-weight: bold;">Confirm Email: {{ .Email }}</a>
|
||||||
|
|
||||||
<p>Confirming your email ensures your account is properly secured. This also allows you to access member-only tools and content.</p>
|
<p>By confirming your email, you will be able to access additional features and receive important notifications related to your {{ .CompanyName }} account.</p>
|
||||||
|
|
||||||
<p>If you did not initiate this request or have any questions, please disregard this email. Your account will not be activated.</p>
|
<p>If you did not initiate this request or have any questions, please disregard this email. Your email address will not be associated with any account.</p>
|
||||||
|
|
||||||
Regards,
|
Regards,
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
// fs_admin_department 后台--部门表
|
// fs_admin_department 后台--部门表
|
||||||
type FsAdminDepartment struct {
|
type FsAdminDepartment struct {
|
||||||
Id int64 `gorm:"primary_key;default:0;" json:"id"` // 序号
|
Id int64 `gorm:"primary_key;default:0;auto_increment;" json:"id"` // 序号
|
||||||
DeptPid *int64 `gorm:"default:0;" json:"dept_pid"` // 上级部门
|
DeptPid *int64 `gorm:"default:0;" json:"dept_pid"` // 上级部门
|
||||||
DeptNo *string `gorm:"default:'';" json:"dept_no"` //
|
DeptNo *string `gorm:"default:'';" json:"dept_no"` //
|
||||||
DeptName *string `gorm:"default:'';" json:"dept_name"` //
|
DeptName *string `gorm:"default:'';" json:"dept_name"` //
|
||||||
|
@ -22,6 +22,7 @@ type FsAdminMenu struct {
|
|||||||
UpdateUid *int64 `gorm:"default:0;" json:"update_uid"` // 更新人
|
UpdateUid *int64 `gorm:"default:0;" json:"update_uid"` // 更新人
|
||||||
DeleteUid *int64 `gorm:"default:0;" json:"delete_uid"` // 删除人
|
DeleteUid *int64 `gorm:"default:0;" json:"delete_uid"` // 删除人
|
||||||
IsDel *int64 `gorm:"default:0;" json:"is_del"` // 是否删除:1=是 0=否
|
IsDel *int64 `gorm:"default:0;" json:"is_del"` // 是否删除:1=是 0=否
|
||||||
|
Status *int64 `gorm:"default:2;" json:"status"` // 状态:1=启用,2=停用
|
||||||
}
|
}
|
||||||
type FsAdminMenuModel struct {
|
type FsAdminMenuModel struct {
|
||||||
db *gorm.DB
|
db *gorm.DB
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
// fs_admin_role 后台--角色表
|
// fs_admin_role 后台--角色表
|
||||||
type FsAdminRole struct {
|
type FsAdminRole struct {
|
||||||
Id int64 `gorm:"primary_key;default:0;" json:"id"` // 序号
|
Id int64 `gorm:"primary_key;default:0;auto_increment;" json:"id"` // 序号
|
||||||
RolePid *int64 `gorm:"default:0;" json:"role_pid"` // 上级角色
|
RolePid *int64 `gorm:"default:0;" json:"role_pid"` // 上级角色
|
||||||
RoleName *string `gorm:"default:'';" json:"role_name"` //
|
RoleName *string `gorm:"default:'';" json:"role_name"` //
|
||||||
DataAuthType *int64 `gorm:"default:1;" json:"data_auth_type"` // 数据权限类型
|
DataAuthType *int64 `gorm:"default:1;" json:"data_auth_type"` // 数据权限类型
|
||||||
|
@ -7,7 +7,7 @@ import (
|
|||||||
|
|
||||||
// fs_admin_user 后台--管理员表
|
// fs_admin_user 后台--管理员表
|
||||||
type FsAdminUser struct {
|
type FsAdminUser struct {
|
||||||
Id int64 `gorm:"primary_key;default:0;" json:"id"` // 序号
|
Id int64 `gorm:"primary_key;default:0;auto_increment;" json:"id"` // 序号
|
||||||
DepartmentId *int64 `gorm:"default:0;" json:"department_id"` // 部门
|
DepartmentId *int64 `gorm:"default:0;" json:"department_id"` // 部门
|
||||||
RoleId *int64 `gorm:"default:0;" json:"role_id"` // 角色
|
RoleId *int64 `gorm:"default:0;" json:"role_id"` // 角色
|
||||||
EmployeeId *int64 `gorm:"default:0;" json:"employee_id"` // 员工
|
EmployeeId *int64 `gorm:"default:0;" json:"employee_id"` // 员工
|
||||||
|
@ -7,14 +7,13 @@ import (
|
|||||||
// fs_user 用户表
|
// fs_user 用户表
|
||||||
type FsUser struct {
|
type FsUser struct {
|
||||||
Id int64 `gorm:"primary_key;default:0;auto_increment;" json:"id"` // ID
|
Id int64 `gorm:"primary_key;default:0;auto_increment;" json:"id"` // ID
|
||||||
FaceId *int64 `gorm:"default:0;" json:"face_id"` // facebook的userid
|
FaceId *string `gorm:"default:'0';" json:"face_id"` // facebook的userid
|
||||||
GoogleId *int64 `gorm:"default:0;" json:"google_id"` // google的sub
|
GoogleId *string `gorm:"default:'0';" json:"google_id"` // google的sub
|
||||||
FirstName *string `gorm:"default:'';" json:"first_name"` // FirstName
|
FirstName *string `gorm:"default:'';" json:"first_name"` // FirstName
|
||||||
LastName *string `gorm:"default:'';" json:"last_name"` // LastName
|
LastName *string `gorm:"default:'';" json:"last_name"` // LastName
|
||||||
Username *string `gorm:"index;default:'';" json:"username"` //
|
Username *string `gorm:"index;default:'';" json:"username"` //
|
||||||
Company *string `gorm:"default:'';" json:"company"` // 公司名称
|
Company *string `gorm:"default:'';" json:"company"` // 公司名称
|
||||||
Mobile *string `gorm:"default:'';" json:"mobile"` // 手机号码
|
Mobile *string `gorm:"default:'';" json:"mobile"` // 手机号码
|
||||||
AuthKey *string `gorm:"default:'';" json:"auth_key"` //
|
|
||||||
PasswordHash *string `gorm:"default:'';" json:"password_hash"` //
|
PasswordHash *string `gorm:"default:'';" json:"password_hash"` //
|
||||||
VerificationToken *string `gorm:"default:'';" json:"verification_token"` //
|
VerificationToken *string `gorm:"default:'';" json:"verification_token"` //
|
||||||
PasswordResetToken *string `gorm:"default:'';" json:"password_reset_token"` //
|
PasswordResetToken *string `gorm:"default:'';" json:"password_reset_token"` //
|
||||||
|
@ -40,11 +40,16 @@ func (u *FsUserModel) FindUserById(ctx context.Context, Id int64) (resp FsUser,
|
|||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *FsUserModel) FindUserByGoogleId(ctx context.Context, Id int64) (resp FsUser, err error) {
|
func (u *FsUserModel) FindUserByGoogleId(ctx context.Context, Id string) (resp FsUser, err error) {
|
||||||
err = u.db.WithContext(ctx).Model(&FsUser{}).Where("`google_id` = ? and is_del = ?", Id, 0).Take(&resp).Error
|
err = u.db.WithContext(ctx).Model(&FsUser{}).Where("`google_id` = ? and is_del = ?", Id, 0).Take(&resp).Error
|
||||||
return resp, err
|
return resp, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (u *FsUserModel) FindUserByFacebookId(ctx context.Context, Id string) (resp FsUser, err error) {
|
||||||
|
err = u.db.WithContext(ctx).Model(&FsUser{}).Where("`facebook_id` = ? and is_del = ?", Id, 0).Take(&resp).Error
|
||||||
|
return resp, err
|
||||||
|
}
|
||||||
|
|
||||||
func (u *FsUserModel) Transaction(ctx context.Context, fc func(tx *gorm.DB) error) (err error) {
|
func (u *FsUserModel) Transaction(ctx context.Context, fc func(tx *gorm.DB) error) (err error) {
|
||||||
return u.db.Model(&FsUser{}).WithContext(ctx).Transaction(fc)
|
return u.db.Model(&FsUser{}).WithContext(ctx).Transaction(fc)
|
||||||
}
|
}
|
||||||
@ -100,7 +105,7 @@ func (u *FsUserModel) RegisterByGoogleOAuth(ctx context.Context, token *auth.Reg
|
|||||||
user := &FsUser{}
|
user := &FsUser{}
|
||||||
|
|
||||||
err := u.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
err := u.db.WithContext(ctx).Transaction(func(tx *gorm.DB) error {
|
||||||
googleId := token.Extend["google_id"].(int64)
|
googleId := token.Extend["oauth_id"].(string)
|
||||||
firstName := token.Extend["first_name"].(string)
|
firstName := token.Extend["first_name"].(string)
|
||||||
lastName := token.Extend["last_name"].(string)
|
lastName := token.Extend["last_name"].(string)
|
||||||
|
|
||||||
|
@ -76,10 +76,16 @@ func (l *UserEmailRegisterLogic) UserEmailRegister(req *types.RequestEmailRegist
|
|||||||
if token.Platform == auth.PLATFORM_FUSEN {
|
if token.Platform == auth.PLATFORM_FUSEN {
|
||||||
tplsel = "email_register.tpl"
|
tplsel = "email_register.tpl"
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
tplsel = "email_register_oauth2.tpl"
|
tplsel = "email_register_oauth2.tpl"
|
||||||
}
|
}
|
||||||
|
|
||||||
userName := token.Extend["first_name"].(string) + " " + token.Extend["last_name"].(string)
|
userName := token.Extend["first_name"].(string) + " " + token.Extend["last_name"].(string)
|
||||||
|
var platformAndId string
|
||||||
|
if oauthId, ok := token.Extend["oauth_id"]; ok {
|
||||||
|
platformAndId = token.Platform + " Id: " + oauthId.(string)
|
||||||
|
}
|
||||||
|
|
||||||
// 进入发送邮箱的系统
|
// 进入发送邮箱的系统
|
||||||
EmailManager.EmailTasks <- &EmailFormat{
|
EmailManager.EmailTasks <- &EmailFormat{
|
||||||
TemplateName: tplsel,
|
TemplateName: tplsel,
|
||||||
@ -90,8 +96,9 @@ func (l *UserEmailRegisterLogic) UserEmailRegister(req *types.RequestEmailRegist
|
|||||||
SenderName: "support@fusenpack.com",
|
SenderName: "support@fusenpack.com",
|
||||||
SenderTitle: "register-valid",
|
SenderTitle: "register-valid",
|
||||||
Extend: map[string]string{
|
Extend: map[string]string{
|
||||||
"UserName": userName,
|
"UserName": userName,
|
||||||
"Email": req.Email,
|
"Email": req.Email,
|
||||||
|
"PlatformAndID": platformAndId,
|
||||||
},
|
},
|
||||||
} // email进入队
|
} // email进入队
|
||||||
|
|
||||||
|
@ -33,6 +33,7 @@ type UserGoogleLoginLogic struct {
|
|||||||
|
|
||||||
isRegistered bool // 是否注册
|
isRegistered bool // 是否注册
|
||||||
registerToken string // 注册邮箱的token
|
registerToken string // 注册邮箱的token
|
||||||
|
defaultEmail string // 能从第三方拿到的默认邮箱
|
||||||
registerInfo *auth.RegisterToken
|
registerInfo *auth.RegisterToken
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -75,7 +76,7 @@ func (l *UserGoogleLoginLogic) UserGoogleLogin(req *types.RequestGoogleLogin, us
|
|||||||
gresult := r.Json()
|
gresult := r.Json()
|
||||||
logx.Info(gresult)
|
logx.Info(gresult)
|
||||||
|
|
||||||
googleId := gresult.Get("id").Int()
|
googleId := gresult.Get("id").String()
|
||||||
user, err := l.svcCtx.AllModels.FsUser.FindUserByGoogleId(context.TODO(), googleId)
|
user, err := l.svcCtx.AllModels.FsUser.FindUserByGoogleId(context.TODO(), googleId)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != gorm.ErrRecordNotFound {
|
if err != gorm.ErrRecordNotFound {
|
||||||
@ -96,7 +97,7 @@ func (l *UserGoogleLoginLogic) UserGoogleLogin(req *types.RequestGoogleLogin, us
|
|||||||
TraceId: uuid.NewString(),
|
TraceId: uuid.NewString(),
|
||||||
CreateAt: time.Now().UTC(),
|
CreateAt: time.Now().UTC(),
|
||||||
Extend: map[string]interface{}{
|
Extend: map[string]interface{}{
|
||||||
"google_id": googleId,
|
"oauth_id": googleId,
|
||||||
"first_name": gresult.Get("family_name").String(),
|
"first_name": gresult.Get("family_name").String(),
|
||||||
"last_name": gresult.Get("given_name").String(),
|
"last_name": gresult.Get("given_name").String(),
|
||||||
},
|
},
|
||||||
@ -109,6 +110,7 @@ func (l *UserGoogleLoginLogic) UserGoogleLogin(req *types.RequestGoogleLogin, us
|
|||||||
return resp.SetStatus(basic.CodeOAuthRegisterTokenErr)
|
return resp.SetStatus(basic.CodeOAuthRegisterTokenErr)
|
||||||
}
|
}
|
||||||
l.registerToken = token
|
l.registerToken = token
|
||||||
|
l.defaultEmail = gresult.Get("email").String()
|
||||||
|
|
||||||
return resp.SetStatus(basic.CodeOK)
|
return resp.SetStatus(basic.CodeOK)
|
||||||
}
|
}
|
||||||
@ -136,10 +138,11 @@ func (l *UserGoogleLoginLogic) AfterLogic(w http.ResponseWriter, r *http.Request
|
|||||||
logx.Info(l)
|
logx.Info(l)
|
||||||
|
|
||||||
rurl := fmt.Sprintf(
|
rurl := fmt.Sprintf(
|
||||||
"http://www.fusen.3718.cn"+"/oauth?token=%s&is_registered=%t®ister_token=%s",
|
"http://www.fusen.3718.cn"+"/oauth?token=%s&is_registered=%t®ister_token=%s&defaultEmail=%s",
|
||||||
l.token,
|
l.token,
|
||||||
l.isRegistered,
|
l.isRegistered,
|
||||||
l.registerToken,
|
l.registerToken,
|
||||||
|
l.registerInfo.Email,
|
||||||
)
|
)
|
||||||
|
|
||||||
html := fmt.Sprintf(`
|
html := fmt.Sprintf(`
|
||||||
|
@ -11,7 +11,7 @@ import (
|
|||||||
"fusenapi/utils/file"
|
"fusenapi/utils/file"
|
||||||
"fusenapi/utils/hash"
|
"fusenapi/utils/hash"
|
||||||
"image"
|
"image"
|
||||||
"image/jpeg"
|
"image/png"
|
||||||
"io"
|
"io"
|
||||||
"net/http"
|
"net/http"
|
||||||
|
|
||||||
@ -91,7 +91,7 @@ func (l *LogoResizeLogic) LogoResize(req *types.LogoResizeReq, userinfo *auth.Us
|
|||||||
}
|
}
|
||||||
|
|
||||||
emptyBuff := bytes.NewBuffer(nil) //开辟一个新的空buff
|
emptyBuff := bytes.NewBuffer(nil) //开辟一个新的空buff
|
||||||
jpeg.Encode(emptyBuff, src, nil) //img写入到buff
|
png.Encode(emptyBuff, src) //img写入到buff
|
||||||
|
|
||||||
var hashKeyDataMap = make(map[string]interface{})
|
var hashKeyDataMap = make(map[string]interface{})
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user