🐛 Fix logout session
This commit is contained in:
@@ -449,8 +449,7 @@ public class AccountService(
|
|||||||
|
|
||||||
public async Task<AuthClient> UpdateDeviceName(Account account, string deviceId, string label)
|
public async Task<AuthClient> UpdateDeviceName(Account account, string deviceId, string label)
|
||||||
{
|
{
|
||||||
var device = await db.AuthClients.FirstOrDefaultAsync(
|
var device = await db.AuthClients.FirstOrDefaultAsync(c => c.DeviceId == deviceId && c.AccountId == account.Id
|
||||||
c => c.DeviceId == deviceId && c.AccountId == account.Id
|
|
||||||
);
|
);
|
||||||
if (device is null) throw new InvalidOperationException("Device was not found.");
|
if (device is null) throw new InvalidOperationException("Device was not found.");
|
||||||
|
|
||||||
@@ -470,16 +469,11 @@ public class AccountService(
|
|||||||
.FirstOrDefaultAsync();
|
.FirstOrDefaultAsync();
|
||||||
if (session is null) throw new InvalidOperationException("Session was not found.");
|
if (session is null) throw new InvalidOperationException("Session was not found.");
|
||||||
|
|
||||||
var sessions = await db.AuthSessions
|
|
||||||
.Include(s => s.Challenge)
|
|
||||||
.Where(s => s.AccountId == session.Id && s.Challenge.DeviceId == session.Challenge.DeviceId)
|
|
||||||
.ToListAsync();
|
|
||||||
|
|
||||||
if (session.Challenge.ClientId.HasValue)
|
if (session.Challenge.ClientId.HasValue)
|
||||||
{
|
{
|
||||||
if (!await IsDeviceActive(session.Challenge.ClientId.Value))
|
if (!await IsDeviceActive(session.Challenge.ClientId.Value))
|
||||||
await pusher.UnsubscribePushNotificationsAsync(new UnsubscribePushNotificationsRequest()
|
await pusher.UnsubscribePushNotificationsAsync(new UnsubscribePushNotificationsRequest()
|
||||||
{ DeviceId = session.Challenge.Client!.DeviceId }
|
{ DeviceId = session.Challenge.Client!.DeviceId }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -489,14 +483,12 @@ public class AccountService(
|
|||||||
.Where(s => s.Challenge.DeviceId == session.Challenge.DeviceId)
|
.Where(s => s.Challenge.DeviceId == session.Challenge.DeviceId)
|
||||||
.ExecuteDeleteAsync();
|
.ExecuteDeleteAsync();
|
||||||
|
|
||||||
foreach (var item in sessions)
|
await cache.RemoveAsync($"{AuthService.AuthCachePrefix}{session.Id}");
|
||||||
await cache.RemoveAsync($"{AuthService.AuthCachePrefix}{item.Id}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeleteDevice(Account account, string deviceId)
|
public async Task DeleteDevice(Account account, string deviceId)
|
||||||
{
|
{
|
||||||
var device = await db.AuthClients.FirstOrDefaultAsync(
|
var device = await db.AuthClients.FirstOrDefaultAsync(c => c.DeviceId == deviceId && c.AccountId == account.Id
|
||||||
c => c.DeviceId == deviceId && c.AccountId == account.Id
|
|
||||||
);
|
);
|
||||||
if (device is null)
|
if (device is null)
|
||||||
throw new InvalidOperationException("Device not found.");
|
throw new InvalidOperationException("Device not found.");
|
||||||
|
Reference in New Issue
Block a user