stop storing guest passwords, mint sessions server side

The old flow encrypted the guest password on disk next to its own key,
then sent it to the guest in the bootstrap HTML anyway. Now redemption
mints the session with ISessionManager.AuthenticateDirect and the page
only ever carries the session token. The guest account still gets a
random password nobody knows, so blank login stays impossible, but no
password is stored or sent anywhere anymore. Cleanup now defaults to
every 30 minutes instead of daily at 4am so expired guests die fast.
Cette révision appartient à :
Franciskid
2026-07-08 00:50:20 +02:00
Parent 2f3c4a8213
révision f2b523be97
5 fichiers modifiés avec 41 ajouts et 122 suppressions
+5 -4
Voir le fichier
@@ -8,7 +8,8 @@ using MediaBrowser.Model.Tasks;
namespace Jellyfin.Plugin.ShareLinks.Tasks;
/// <summary>
/// Scheduled cleanup shell for later link-expiry and guest-account teardown work.
/// Scheduled task that expires share links past their <c>ExpiresAtUtc</c> and tears down
/// the associated guest users and tags.
/// </summary>
public sealed class CleanupShareLinksScheduledTask : IScheduledTask, IConfigurableScheduledTask
{
@@ -27,7 +28,7 @@ public sealed class CleanupShareLinksScheduledTask : IScheduledTask, IConfigurab
public string Key => "ShareLinksCleanup";
/// <inheritdoc />
public string Description => "Removes expired share links and performs future guest-account cleanup.";
public string Description => "Expires share links past their expiry time and removes their guest users and tags.";
/// <inheritdoc />
public string Category => "ShareLinks";
@@ -53,8 +54,8 @@ public sealed class CleanupShareLinksScheduledTask : IScheduledTask, IConfigurab
{
yield return new TaskTriggerInfo
{
Type = TaskTriggerInfoType.DailyTrigger,
TimeOfDayTicks = TimeSpan.FromHours(4).Ticks,
Type = TaskTriggerInfoType.IntervalTrigger,
IntervalTicks = TimeSpan.FromMinutes(30).Ticks,
};
}
}