Skip to content

Commit 69bfd81

Browse files
daviiantechknowlogick
authored andcommitted
fix missing data on redirects (#3975)
1 parent 6e39f3d commit 69bfd81

File tree

6 files changed

+90
-86
lines changed

6 files changed

+90
-86
lines changed

routers/user/setting/account.go

Lines changed: 18 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,7 @@ func Account(ctx *context.Context) {
2424
ctx.Data["PageIsSettingsAccount"] = true
2525
ctx.Data["Email"] = ctx.User.Email
2626

27-
emails, err := models.GetEmailAddresses(ctx.User.ID)
28-
if err != nil {
29-
ctx.ServerError("GetEmailAddresses", err)
30-
return
31-
}
32-
ctx.Data["Emails"] = emails
27+
loadAccountData(ctx)
3328

3429
ctx.HTML(200, tplSettingsAccount)
3530
}
@@ -40,6 +35,8 @@ func AccountPost(ctx *context.Context, form auth.ChangePasswordForm) {
4035
ctx.Data["PageIsSettingsAccount"] = true
4136

4237
if ctx.HasError() {
38+
loadAccountData(ctx)
39+
4340
ctx.HTML(200, tplSettingsAccount)
4441
return
4542
}
@@ -85,15 +82,9 @@ func EmailPost(ctx *context.Context, form auth.AddEmailForm) {
8582
return
8683
}
8784

88-
// Add Email address.
89-
emails, err := models.GetEmailAddresses(ctx.User.ID)
90-
if err != nil {
91-
ctx.ServerError("GetEmailAddresses", err)
92-
return
93-
}
94-
ctx.Data["Emails"] = emails
95-
9685
if ctx.HasError() {
86+
loadAccountData(ctx)
87+
9788
ctx.HTML(200, tplSettingsAccount)
9889
return
9990
}
@@ -105,6 +96,8 @@ func EmailPost(ctx *context.Context, form auth.AddEmailForm) {
10596
}
10697
if err := models.AddEmailAddress(email); err != nil {
10798
if models.IsErrEmailAlreadyUsed(err) {
99+
loadAccountData(ctx)
100+
108101
ctx.RenderWithErr(ctx.Tr("form.email_been_used"), tplSettingsAccount, &form)
109102
return
110103
}
@@ -149,6 +142,8 @@ func DeleteAccount(ctx *context.Context) {
149142

150143
if _, err := models.UserSignIn(ctx.User.Name, ctx.Query("password")); err != nil {
151144
if models.IsErrUserNotExist(err) {
145+
loadAccountData(ctx)
146+
152147
ctx.RenderWithErr(ctx.Tr("form.enterred_invalid_password"), tplSettingsAccount, nil)
153148
} else {
154149
ctx.ServerError("UserSignIn", err)
@@ -172,3 +167,12 @@ func DeleteAccount(ctx *context.Context) {
172167
ctx.Redirect(setting.AppSubURL + "/")
173168
}
174169
}
170+
171+
func loadAccountData(ctx *context.Context) {
172+
emails, err := models.GetEmailAddresses(ctx.User.ID)
173+
if err != nil {
174+
ctx.ServerError("GetEmailAddresses", err)
175+
return
176+
}
177+
ctx.Data["Emails"] = emails
178+
}

routers/user/setting/applications.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,7 @@ func Applications(ctx *context.Context) {
2222
ctx.Data["Title"] = ctx.Tr("settings")
2323
ctx.Data["PageIsSettingsApplications"] = true
2424

25-
tokens, err := models.ListAccessTokens(ctx.User.ID)
26-
if err != nil {
27-
ctx.ServerError("ListAccessTokens", err)
28-
return
29-
}
30-
ctx.Data["Tokens"] = tokens
25+
loadApplicationsData(ctx)
3126

3227
ctx.HTML(200, tplSettingsApplications)
3328
}
@@ -38,12 +33,8 @@ func ApplicationsPost(ctx *context.Context, form auth.NewAccessTokenForm) {
3833
ctx.Data["PageIsSettingsApplications"] = true
3934

4035
if ctx.HasError() {
41-
tokens, err := models.ListAccessTokens(ctx.User.ID)
42-
if err != nil {
43-
ctx.ServerError("ListAccessTokens", err)
44-
return
45-
}
46-
ctx.Data["Tokens"] = tokens
36+
loadApplicationsData(ctx)
37+
4738
ctx.HTML(200, tplSettingsApplications)
4839
return
4940
}
@@ -75,3 +66,12 @@ func DeleteApplication(ctx *context.Context) {
7566
"redirect": setting.AppSubURL + "/user/settings/applications",
7667
})
7768
}
69+
70+
func loadApplicationsData(ctx *context.Context) {
71+
tokens, err := models.ListAccessTokens(ctx.User.ID)
72+
if err != nil {
73+
ctx.ServerError("ListAccessTokens", err)
74+
return
75+
}
76+
ctx.Data["Tokens"] = tokens
77+
}

routers/user/setting/keys.go

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -23,19 +23,7 @@ func Keys(ctx *context.Context) {
2323
ctx.Data["PageIsSettingsKeys"] = true
2424
ctx.Data["DisableSSH"] = setting.SSH.Disabled
2525

26-
keys, err := models.ListPublicKeys(ctx.User.ID)
27-
if err != nil {
28-
ctx.ServerError("ListPublicKeys", err)
29-
return
30-
}
31-
ctx.Data["Keys"] = keys
32-
33-
gpgkeys, err := models.ListGPGKeys(ctx.User.ID)
34-
if err != nil {
35-
ctx.ServerError("ListGPGKeys", err)
36-
return
37-
}
38-
ctx.Data["GPGKeys"] = gpgkeys
26+
loadKeysData(ctx)
3927

4028
ctx.HTML(200, tplSettingsKeys)
4129
}
@@ -45,21 +33,9 @@ func KeysPost(ctx *context.Context, form auth.AddKeyForm) {
4533
ctx.Data["Title"] = ctx.Tr("settings")
4634
ctx.Data["PageIsSettingsKeys"] = true
4735

48-
keys, err := models.ListPublicKeys(ctx.User.ID)
49-
if err != nil {
50-
ctx.ServerError("ListPublicKeys", err)
51-
return
52-
}
53-
ctx.Data["Keys"] = keys
54-
55-
gpgkeys, err := models.ListGPGKeys(ctx.User.ID)
56-
if err != nil {
57-
ctx.ServerError("ListGPGKeys", err)
58-
return
59-
}
60-
ctx.Data["GPGKeys"] = gpgkeys
61-
6236
if ctx.HasError() {
37+
loadKeysData(ctx)
38+
6339
ctx.HTML(200, tplSettingsKeys)
6440
return
6541
}
@@ -73,9 +49,13 @@ func KeysPost(ctx *context.Context, form auth.AddKeyForm) {
7349
ctx.Flash.Error(ctx.Tr("form.invalid_gpg_key", err.Error()))
7450
ctx.Redirect(setting.AppSubURL + "/user/settings/keys")
7551
case models.IsErrGPGKeyIDAlreadyUsed(err):
52+
loadKeysData(ctx)
53+
7654
ctx.Data["Err_Content"] = true
7755
ctx.RenderWithErr(ctx.Tr("settings.gpg_key_id_used"), tplSettingsKeys, &form)
7856
case models.IsErrGPGNoEmailFound(err):
57+
loadKeysData(ctx)
58+
7959
ctx.Data["Err_Content"] = true
8060
ctx.RenderWithErr(ctx.Tr("settings.gpg_no_key_email_found"), tplSettingsKeys, &form)
8161
default:
@@ -103,9 +83,13 @@ func KeysPost(ctx *context.Context, form auth.AddKeyForm) {
10383
ctx.Data["HasSSHError"] = true
10484
switch {
10585
case models.IsErrKeyAlreadyExist(err):
86+
loadKeysData(ctx)
87+
10688
ctx.Data["Err_Content"] = true
10789
ctx.RenderWithErr(ctx.Tr("settings.ssh_key_been_used"), tplSettingsKeys, &form)
10890
case models.IsErrKeyNameAlreadyUsed(err):
91+
loadKeysData(ctx)
92+
10993
ctx.Data["Err_Title"] = true
11094
ctx.RenderWithErr(ctx.Tr("settings.ssh_key_name_used"), tplSettingsKeys, &form)
11195
default:
@@ -147,3 +131,19 @@ func DeleteKey(ctx *context.Context) {
147131
"redirect": setting.AppSubURL + "/user/settings/keys",
148132
})
149133
}
134+
135+
func loadKeysData(ctx *context.Context) {
136+
keys, err := models.ListPublicKeys(ctx.User.ID)
137+
if err != nil {
138+
ctx.ServerError("ListPublicKeys", err)
139+
return
140+
}
141+
ctx.Data["Keys"] = keys
142+
143+
gpgkeys, err := models.ListGPGKeys(ctx.User.ID)
144+
if err != nil {
145+
ctx.ServerError("ListGPGKeys", err)
146+
return
147+
}
148+
ctx.Data["GPGKeys"] = gpgkeys
149+
}

routers/user/setting/profile.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ const (
3232
func Profile(ctx *context.Context) {
3333
ctx.Data["Title"] = ctx.Tr("settings")
3434
ctx.Data["PageIsSettingsProfile"] = true
35+
3536
ctx.HTML(200, tplSettingsProfile)
3637
}
3738

routers/user/setting/security.go

Lines changed: 24 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,30 @@ func Security(ctx *context.Context) {
2222
ctx.Data["Title"] = ctx.Tr("settings")
2323
ctx.Data["PageIsSettingsSecurity"] = true
2424

25+
if ctx.Query("openid.return_to") != "" {
26+
settingsOpenIDVerify(ctx)
27+
return
28+
}
29+
30+
loadSecurityData(ctx)
31+
32+
ctx.HTML(200, tplSettingsSecurity)
33+
}
34+
35+
// DeleteAccountLink delete a single account link
36+
func DeleteAccountLink(ctx *context.Context) {
37+
if _, err := models.RemoveAccountLink(ctx.User, ctx.QueryInt64("loginSourceID")); err != nil {
38+
ctx.Flash.Error("RemoveAccountLink: " + err.Error())
39+
} else {
40+
ctx.Flash.Success(ctx.Tr("settings.remove_account_link_success"))
41+
}
42+
43+
ctx.JSON(200, map[string]interface{}{
44+
"redirect": setting.AppSubURL + "/user/settings/security",
45+
})
46+
}
47+
48+
func loadSecurityData(ctx *context.Context) {
2549
enrolled := true
2650
_, err := models.GetTwoFactorByUID(ctx.User.ID)
2751
if err != nil {
@@ -71,30 +95,10 @@ func Security(ctx *context.Context) {
7195
}
7296
ctx.Data["AccountLinks"] = sources
7397

74-
if ctx.Query("openid.return_to") != "" {
75-
settingsOpenIDVerify(ctx)
76-
return
77-
}
78-
7998
openid, err := models.GetUserOpenIDs(ctx.User.ID)
8099
if err != nil {
81100
ctx.ServerError("GetUserOpenIDs", err)
82101
return
83102
}
84103
ctx.Data["OpenIDs"] = openid
85-
86-
ctx.HTML(200, tplSettingsSecurity)
87-
}
88-
89-
// DeleteAccountLink delete a single account link
90-
func DeleteAccountLink(ctx *context.Context) {
91-
if _, err := models.RemoveAccountLink(ctx.User, ctx.QueryInt64("loginSourceID")); err != nil {
92-
ctx.Flash.Error("RemoveAccountLink: " + err.Error())
93-
} else {
94-
ctx.Flash.Success(ctx.Tr("settings.remove_account_link_success"))
95-
}
96-
97-
ctx.JSON(200, map[string]interface{}{
98-
"redirect": setting.AppSubURL + "/user/settings/security",
99-
})
100104
}

routers/user/setting/security_openid.go

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,8 @@ func OpenIDPost(ctx *context.Context, form auth.AddOpenIDForm) {
1919
ctx.Data["PageIsSettingsSecurity"] = true
2020

2121
if ctx.HasError() {
22-
openid, err := models.GetUserOpenIDs(ctx.User.ID)
23-
if err != nil {
24-
ctx.ServerError("GetUserOpenIDs", err)
25-
return
26-
}
27-
ctx.Data["OpenIDs"] = openid
22+
loadSecurityData(ctx)
23+
2824
ctx.HTML(200, tplSettingsSecurity)
2925
return
3026
}
@@ -37,6 +33,8 @@ func OpenIDPost(ctx *context.Context, form auth.AddOpenIDForm) {
3733

3834
id, err := openid.Normalize(form.Openid)
3935
if err != nil {
36+
loadSecurityData(ctx)
37+
4038
ctx.RenderWithErr(err.Error(), tplSettingsSecurity, &form)
4139
return
4240
}
@@ -53,6 +51,8 @@ func OpenIDPost(ctx *context.Context, form auth.AddOpenIDForm) {
5351
// Check that the OpenID is not already used
5452
for _, obj := range oids {
5553
if obj.URI == id {
54+
loadSecurityData(ctx)
55+
5656
ctx.RenderWithErr(ctx.Tr("form.openid_been_used", id), tplSettingsSecurity, &form)
5757
return
5858
}
@@ -61,6 +61,8 @@ func OpenIDPost(ctx *context.Context, form auth.AddOpenIDForm) {
6161
redirectTo := setting.AppURL + "user/settings/security"
6262
url, err := openid.RedirectURL(id, redirectTo, setting.AppURL)
6363
if err != nil {
64+
loadSecurityData(ctx)
65+
6466
ctx.RenderWithErr(err.Error(), tplSettingsSecurity, &form)
6567
return
6668
}
@@ -73,13 +75,6 @@ func settingsOpenIDVerify(ctx *context.Context) {
7375
fullURL := setting.AppURL + ctx.Req.Request.URL.String()[1:]
7476
log.Trace("Full URL: " + fullURL)
7577

76-
oids, err := models.GetUserOpenIDs(ctx.User.ID)
77-
if err != nil {
78-
ctx.ServerError("GetUserOpenIDs", err)
79-
return
80-
}
81-
ctx.Data["OpenIDs"] = oids
82-
8378
id, err := openid.Verify(fullURL)
8479
if err != nil {
8580
ctx.RenderWithErr(err.Error(), tplSettingsSecurity, &auth.AddOpenIDForm{

0 commit comments

Comments
 (0)