From 88a8e73943509549cbeeede382796d6301f41e52 Mon Sep 17 00:00:00 2001 From: eson <9673575+githubcontent@user.noreply.gitee.com> Date: Wed, 6 Sep 2023 18:35:57 +0800 Subject: [PATCH] fix --- fs_template/email_register_oauth2.tpl | 8 ++++---- model/gmodel/fs_admin_department_gen.go | 2 +- model/gmodel/fs_admin_menu_gen.go | 1 + model/gmodel/fs_admin_role_gen.go | 2 +- model/gmodel/fs_admin_user_gen.go | 2 +- model/gmodel/fs_user_gen.go | 5 ++--- model/gmodel/fs_user_logic.go | 9 +++++++-- server/auth/internal/logic/useremailregisterlogic.go | 11 +++++++++-- server/auth/internal/logic/usergoogleloginlogic.go | 9 ++++++--- 9 files changed, 32 insertions(+), 17 deletions(-) diff --git a/fs_template/email_register_oauth2.tpl b/fs_template/email_register_oauth2.tpl index 6d8b4c89..892bf3df 100644 --- a/fs_template/email_register_oauth2.tpl +++ b/fs_template/email_register_oauth2.tpl @@ -1,4 +1,4 @@ -Subject: Please confirm your {{ .CompanyName }} account +Subject: Confirm Email Address for {{ .CompanyName }} Account MIME-version: 1.0 Content-Type: text/html; charset="UTF-8" From: "Fusen Support" @@ -9,13 +9,13 @@ From: "Fusen Support" <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> -<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, diff --git a/model/gmodel/fs_admin_department_gen.go b/model/gmodel/fs_admin_department_gen.go index 25349b64..4752b3fd 100644 --- a/model/gmodel/fs_admin_department_gen.go +++ b/model/gmodel/fs_admin_department_gen.go @@ -7,7 +7,7 @@ import ( // fs_admin_department 后台--部门表 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"` // 上级部门 DeptNo *string `gorm:"default:'';" json:"dept_no"` // DeptName *string `gorm:"default:'';" json:"dept_name"` // diff --git a/model/gmodel/fs_admin_menu_gen.go b/model/gmodel/fs_admin_menu_gen.go index 230ea1b4..c26f3ee5 100644 --- a/model/gmodel/fs_admin_menu_gen.go +++ b/model/gmodel/fs_admin_menu_gen.go @@ -22,6 +22,7 @@ type FsAdminMenu struct { UpdateUid *int64 `gorm:"default:0;" json:"update_uid"` // 更新人 DeleteUid *int64 `gorm:"default:0;" json:"delete_uid"` // 删除人 IsDel *int64 `gorm:"default:0;" json:"is_del"` // 是否删除:1=是 0=否 + Status *int64 `gorm:"default:2;" json:"status"` // 状态:1=启用,2=停用 } type FsAdminMenuModel struct { db *gorm.DB diff --git a/model/gmodel/fs_admin_role_gen.go b/model/gmodel/fs_admin_role_gen.go index 0b0b470d..1b5578fc 100644 --- a/model/gmodel/fs_admin_role_gen.go +++ b/model/gmodel/fs_admin_role_gen.go @@ -7,7 +7,7 @@ import ( // fs_admin_role 后台--角色表 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"` // 上级角色 RoleName *string `gorm:"default:'';" json:"role_name"` // DataAuthType *int64 `gorm:"default:1;" json:"data_auth_type"` // 数据权限类型 diff --git a/model/gmodel/fs_admin_user_gen.go b/model/gmodel/fs_admin_user_gen.go index 5221094f..52454e86 100644 --- a/model/gmodel/fs_admin_user_gen.go +++ b/model/gmodel/fs_admin_user_gen.go @@ -7,7 +7,7 @@ import ( // fs_admin_user 后台--管理员表 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"` // 部门 RoleId *int64 `gorm:"default:0;" json:"role_id"` // 角色 EmployeeId *int64 `gorm:"default:0;" json:"employee_id"` // 员工 diff --git a/model/gmodel/fs_user_gen.go b/model/gmodel/fs_user_gen.go index ac8a8e73..6eb80dc1 100644 --- a/model/gmodel/fs_user_gen.go +++ b/model/gmodel/fs_user_gen.go @@ -7,14 +7,13 @@ import ( // fs_user 用户表 type FsUser struct { Id int64 `gorm:"primary_key;default:0;auto_increment;" json:"id"` // ID - FaceId *int64 `gorm:"default:0;" json:"face_id"` // facebook的userid - GoogleId *int64 `gorm:"default:0;" json:"google_id"` // google的sub + FaceId *string `gorm:"default:'0';" json:"face_id"` // facebook的userid + GoogleId *string `gorm:"default:'0';" json:"google_id"` // google的sub FirstName *string `gorm:"default:'';" json:"first_name"` // FirstName LastName *string `gorm:"default:'';" json:"last_name"` // LastName Username *string `gorm:"index;default:'';" json:"username"` // Company *string `gorm:"default:'';" json:"company"` // 公司名称 Mobile *string `gorm:"default:'';" json:"mobile"` // 手机号码 - AuthKey *string `gorm:"default:'';" json:"auth_key"` // PasswordHash *string `gorm:"default:'';" json:"password_hash"` // VerificationToken *string `gorm:"default:'';" json:"verification_token"` // PasswordResetToken *string `gorm:"default:'';" json:"password_reset_token"` // diff --git a/model/gmodel/fs_user_logic.go b/model/gmodel/fs_user_logic.go index ac7fdac9..c72bb9d9 100644 --- a/model/gmodel/fs_user_logic.go +++ b/model/gmodel/fs_user_logic.go @@ -40,11 +40,16 @@ func (u *FsUserModel) FindUserById(ctx context.Context, Id int64) (resp FsUser, 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 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) { 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{} 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) lastName := token.Extend["last_name"].(string) diff --git a/server/auth/internal/logic/useremailregisterlogic.go b/server/auth/internal/logic/useremailregisterlogic.go index fb3d8abe..180d0900 100644 --- a/server/auth/internal/logic/useremailregisterlogic.go +++ b/server/auth/internal/logic/useremailregisterlogic.go @@ -76,10 +76,16 @@ func (l *UserEmailRegisterLogic) UserEmailRegister(req *types.RequestEmailRegist if token.Platform == auth.PLATFORM_FUSEN { tplsel = "email_register.tpl" } else { + tplsel = "email_register_oauth2.tpl" } 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{ TemplateName: tplsel, @@ -90,8 +96,9 @@ func (l *UserEmailRegisterLogic) UserEmailRegister(req *types.RequestEmailRegist SenderName: "support@fusenpack.com", SenderTitle: "register-valid", Extend: map[string]string{ - "UserName": userName, - "Email": req.Email, + "UserName": userName, + "Email": req.Email, + "PlatformAndID": platformAndId, }, } // email进入队 diff --git a/server/auth/internal/logic/usergoogleloginlogic.go b/server/auth/internal/logic/usergoogleloginlogic.go index 51b55692..56a8e498 100644 --- a/server/auth/internal/logic/usergoogleloginlogic.go +++ b/server/auth/internal/logic/usergoogleloginlogic.go @@ -33,6 +33,7 @@ type UserGoogleLoginLogic struct { isRegistered bool // 是否注册 registerToken string // 注册邮箱的token + defaultEmail string // 能从第三方拿到的默认邮箱 registerInfo *auth.RegisterToken } @@ -75,7 +76,7 @@ func (l *UserGoogleLoginLogic) UserGoogleLogin(req *types.RequestGoogleLogin, us gresult := r.Json() logx.Info(gresult) - googleId := gresult.Get("id").Int() + googleId := gresult.Get("id").String() user, err := l.svcCtx.AllModels.FsUser.FindUserByGoogleId(context.TODO(), googleId) if err != nil { if err != gorm.ErrRecordNotFound { @@ -96,7 +97,7 @@ func (l *UserGoogleLoginLogic) UserGoogleLogin(req *types.RequestGoogleLogin, us TraceId: uuid.NewString(), CreateAt: time.Now().UTC(), Extend: map[string]interface{}{ - "google_id": googleId, + "oauth_id": googleId, "first_name": gresult.Get("family_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) } l.registerToken = token + l.defaultEmail = gresult.Get("email").String() return resp.SetStatus(basic.CodeOK) } @@ -136,10 +138,11 @@ func (l *UserGoogleLoginLogic) AfterLogic(w http.ResponseWriter, r *http.Request logx.Info(l) 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.isRegistered, l.registerToken, + l.registerInfo.Email, ) html := fmt.Sprintf(`