1
0
mirror of https://github.com/hrfee/jfa-go.git synced 2024-12-22 17:10:10 +00:00

ombi: reset password when using pwr links

When password reset links are enabled, the ombi password will be reset
to the PIN along with Jellyfin.
This commit is contained in:
Harvey Tindall 2021-05-02 13:23:59 +01:00
parent 22a0d8925d
commit af61549bf1
Signed by: hrfee
GPG Key ID: BBC65952848FB1A2
5 changed files with 30 additions and 5 deletions

View File

@ -469,13 +469,13 @@
"description": "Path to the folder Jellyfin puts password-reset files." "description": "Path to the folder Jellyfin puts password-reset files."
}, },
"link_reset": { "link_reset": {
"name": "Use reset link instead of PIN", "name": "Use reset link instead of PIN (Required for Ombi)",
"required": false, "required": false,
"requires_restart": true, "requires_restart": true,
"depends_true": "enabled", "depends_true": "enabled",
"type": "bool", "type": "bool",
"value": false, "value": false,
"description": "Send users a link to reset their password instead of a PIN." "description": "Send users a link to reset their password instead of a PIN. Must be enabled to reset Ombi password at the same time as the Jellyfin password."
}, },
"language": { "language": {
"name": "Default reset link language", "name": "Default reset link language",
@ -722,7 +722,7 @@
"order": [], "order": [],
"meta": { "meta": {
"name": "Ombi Integration", "name": "Ombi Integration",
"description": "Connect to Ombi to automatically create both Ombi and Jellyfin accounts for new users. You'll need to create a user template for this to work. Once enabled, refresh to see an option in settings for this." "description": "Connect to Ombi to automatically create both Ombi and Jellyfin accounts for new users. You'll need to create a user template for this to work. Once enabled, refresh to see an option in settings for this. To handle password resets for Ombi & Jellyfin, enable \"Use reset link instead of PIN\"."
}, },
"settings": { "settings": {
"enabled": { "enabled": {

View File

@ -22,7 +22,11 @@
</span> </span>
<p class="content mb-1"> <p class="content mb-1">
{{ if .success }} {{ if .success }}
{{ if .ombiEnabled }}
{{ .strings.youCanLoginOmbi }}
{{ else }}
{{ .strings.youCanLogin }} {{ .strings.youCanLogin }}
{{ end }}
{{ else }} {{ else }}
{{ .strings.tryAgain }} {{ .strings.tryAgain }}
{{ end }} {{ end }}

View File

@ -7,6 +7,7 @@
"resetFailed": "Password reset failed", "resetFailed": "Password reset failed",
"tryAgain": "Please try again.", "tryAgain": "Please try again.",
"youCanLogin": "You can now log in with the below code as your password.", "youCanLogin": "You can now log in with the below code as your password.",
"youCanLoginOmbi": "You can now log in to Jellyfin & Ombi with the below code as your password.",
"changeYourPassword": "Make sure to change your password after you log in." "changeYourPassword": "Make sure to change your password after you log in."
} }
} }

View File

@ -130,7 +130,7 @@ func (ombi *Ombi) ModifyUser(user map[string]interface{}) (status int, err error
err = fmt.Errorf("No ID provided") err = fmt.Errorf("No ID provided")
return return
} }
_, status, err = ombi.put(ombi.server+"/api/v1/Identity", user, false) _, status, err = ombi.put(ombi.server+"/api/v1/Identity/", user, false)
return return
} }

View File

@ -144,6 +144,7 @@ func (app *appContext) ResetPassword(gc *gin.Context) {
"contactMessage": app.config.Section("ui").Key("contact_message").String(), "contactMessage": app.config.Section("ui").Key("contact_message").String(),
"strings": app.storage.lang.PasswordReset[lang].Strings, "strings": app.storage.lang.PasswordReset[lang].Strings,
"success": false, "success": false,
"ombiEnabled": app.config.Section("ombi").Key("enabled").MustBool(false),
} }
resp, status, err := app.jf.ResetPassword(pin) resp, status, err := app.jf.ResetPassword(pin)
if status == 200 && err == nil && resp.Success { if status == 200 && err == nil && resp.Success {
@ -152,7 +153,26 @@ func (app *appContext) ResetPassword(gc *gin.Context) {
} else { } else {
app.err.Printf("Password Reset failed (%d): %v", status, err) app.err.Printf("Password Reset failed (%d): %v", status, err)
} }
gcHTML(gc, http.StatusOK, "password-reset.html", data) defer gcHTML(gc, http.StatusOK, "password-reset.html", data)
if app.config.Section("ombi").Key("enabled").MustBool(false) {
jfUser, status, err := app.jf.UserByName(resp.UsersReset[0], false)
if status != 200 || err != nil {
app.err.Printf("Failed to get user \"%s\" from jellyfin/emby (%d): %v", resp.UsersReset[0], status, err)
return
}
ombiUser, status, err := app.getOmbiUser(jfUser.ID)
if status != 200 || err != nil {
app.err.Printf("Failed to get user \"%s\" from ombi (%d): %v", resp.UsersReset[0], status, err)
return
}
ombiUser["password"] = pin
status, err = app.ombi.ModifyUser(ombiUser)
if status != 200 || err != nil {
app.err.Printf("Failed to set password for ombi user \"%s\" (%d): %v", ombiUser["userName"], status, err)
return
}
app.debug.Printf("Reset password for ombi user \"%s\"", ombiUser["userName"])
}
} }
func (app *appContext) InviteProxy(gc *gin.Context) { func (app *appContext) InviteProxy(gc *gin.Context) {