mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-06-01 04:34:50 -04:00
Add unlink route
This commit is contained in:
parent
a6c3ab33b1
commit
c0acf1c1a0
@ -19,9 +19,6 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Net.Http;
|
|
||||||
using System.Net.Http.Json;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Kyoo.Abstractions.Controllers;
|
using Kyoo.Abstractions.Controllers;
|
||||||
using Kyoo.Abstractions.Models;
|
using Kyoo.Abstractions.Models;
|
||||||
@ -186,6 +183,23 @@ namespace Kyoo.Authentication.Views
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Unlink account
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// Unlink your account from an external account.
|
||||||
|
/// </remarks>
|
||||||
|
/// <param name="provider">The provider code.</param>
|
||||||
|
/// <returns>Your updated user account</returns>
|
||||||
|
[HttpDelete("login/{provider}")]
|
||||||
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
|
[UserOnly]
|
||||||
|
public Task<User> UnlinkAccount(string provider)
|
||||||
|
{
|
||||||
|
Guid id = User.GetIdOrThrow();
|
||||||
|
return users.DeleteExternalToken(id, provider);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Login.
|
/// Login.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -257,7 +271,6 @@ namespace Kyoo.Authentication.Views
|
|||||||
/// <returns>A new access and refresh token.</returns>
|
/// <returns>A new access and refresh token.</returns>
|
||||||
/// <response code="403">The given refresh token is invalid.</response>
|
/// <response code="403">The given refresh token is invalid.</response>
|
||||||
[HttpGet("refresh")]
|
[HttpGet("refresh")]
|
||||||
[UserOnly]
|
|
||||||
[ProducesResponseType(StatusCodes.Status200OK)]
|
[ProducesResponseType(StatusCodes.Status200OK)]
|
||||||
[ProducesResponseType(StatusCodes.Status403Forbidden, Type = typeof(RequestError))]
|
[ProducesResponseType(StatusCodes.Status403Forbidden, Type = typeof(RequestError))]
|
||||||
public async Task<ActionResult<JwtToken>> Refresh([FromQuery] string token)
|
public async Task<ActionResult<JwtToken>> Refresh([FromQuery] string token)
|
||||||
|
@ -23,7 +23,6 @@ using System.Linq;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Kyoo.Abstractions.Controllers;
|
using Kyoo.Abstractions.Controllers;
|
||||||
using Kyoo.Abstractions.Models;
|
using Kyoo.Abstractions.Models;
|
||||||
using Kyoo.Abstractions.Models.Exceptions;
|
|
||||||
using Kyoo.Abstractions.Models.Permissions;
|
using Kyoo.Abstractions.Models.Permissions;
|
||||||
using Kyoo.Abstractions.Models.Utils;
|
using Kyoo.Abstractions.Models.Utils;
|
||||||
using Kyoo.Postgresql;
|
using Kyoo.Postgresql;
|
||||||
@ -118,4 +117,12 @@ public class UserRepository(
|
|||||||
await database.SaveChangesAsync();
|
await database.SaveChangesAsync();
|
||||||
return user;
|
return user;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<User> DeleteExternalToken(Guid userId, string provider)
|
||||||
|
{
|
||||||
|
User user = await GetWithTracking(userId);
|
||||||
|
user.ExternalId.Remove(provider);
|
||||||
|
await database.SaveChangesAsync();
|
||||||
|
return user;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user