🐛 Fix url didn't decoded
This commit is contained in:
parent
3aad515ab8
commit
ada84f85e9
@ -195,9 +195,15 @@ public class ConnectionController(
|
|||||||
return await HandleManualConnection(provider, oidcService, callbackData, accountId);
|
return await HandleManualConnection(provider, oidcService, callbackData, accountId);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async Task<IActionResult> HandleManualConnection(string provider, OidcService oidcService,
|
private async Task<IActionResult> HandleManualConnection(
|
||||||
OidcCallbackData callbackData, Guid accountId)
|
string provider,
|
||||||
|
OidcService oidcService,
|
||||||
|
OidcCallbackData callbackData,
|
||||||
|
Guid accountId
|
||||||
|
)
|
||||||
{
|
{
|
||||||
|
provider = provider.ToLower();
|
||||||
|
|
||||||
OidcUserInfo userInfo;
|
OidcUserInfo userInfo;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
@ -216,7 +222,7 @@ public class ConnectionController(
|
|||||||
// Check if this provider account is already connected to any user
|
// Check if this provider account is already connected to any user
|
||||||
var existingConnection = await db.AccountConnections
|
var existingConnection = await db.AccountConnections
|
||||||
.FirstOrDefaultAsync(c =>
|
.FirstOrDefaultAsync(c =>
|
||||||
c.Provider.Equals(provider, StringComparison.OrdinalIgnoreCase) &&
|
c.Provider == provider &&
|
||||||
c.ProvidedIdentifier == userInfo.UserId);
|
c.ProvidedIdentifier == userInfo.UserId);
|
||||||
|
|
||||||
// If it's connected to a different user, return error
|
// If it's connected to a different user, return error
|
||||||
@ -229,7 +235,7 @@ public class ConnectionController(
|
|||||||
var userHasProvider = await db.AccountConnections
|
var userHasProvider = await db.AccountConnections
|
||||||
.AnyAsync(c =>
|
.AnyAsync(c =>
|
||||||
c.AccountId == accountId &&
|
c.AccountId == accountId &&
|
||||||
c.Provider.Equals(provider, StringComparison.OrdinalIgnoreCase));
|
c.Provider == provider);
|
||||||
|
|
||||||
if (userHasProvider)
|
if (userHasProvider)
|
||||||
{
|
{
|
||||||
@ -237,7 +243,7 @@ public class ConnectionController(
|
|||||||
var connection = await db.AccountConnections
|
var connection = await db.AccountConnections
|
||||||
.FirstOrDefaultAsync(c =>
|
.FirstOrDefaultAsync(c =>
|
||||||
c.AccountId == accountId &&
|
c.AccountId == accountId &&
|
||||||
c.Provider.Equals(provider, StringComparison.OrdinalIgnoreCase));
|
c.Provider == provider);
|
||||||
|
|
||||||
if (connection != null)
|
if (connection != null)
|
||||||
{
|
{
|
||||||
@ -342,18 +348,18 @@ public class ConnectionController(
|
|||||||
switch (request.Method)
|
switch (request.Method)
|
||||||
{
|
{
|
||||||
case "GET":
|
case "GET":
|
||||||
data.Code = request.Query["code"].FirstOrDefault() ?? "";
|
data.Code = Uri.UnescapeDataString(request.Query["code"].FirstOrDefault() ?? "");
|
||||||
data.IdToken = request.Query["id_token"].FirstOrDefault() ?? "";
|
data.IdToken = Uri.UnescapeDataString(request.Query["id_token"].FirstOrDefault() ?? "");
|
||||||
data.State = request.Query["state"].FirstOrDefault();
|
data.State = Uri.UnescapeDataString(request.Query["state"].FirstOrDefault() ?? "");
|
||||||
break;
|
break;
|
||||||
case "POST" when request.HasFormContentType:
|
case "POST" when request.HasFormContentType:
|
||||||
{
|
{
|
||||||
var form = await request.ReadFormAsync();
|
var form = await request.ReadFormAsync();
|
||||||
data.Code = form["code"].FirstOrDefault() ?? "";
|
data.Code = Uri.UnescapeDataString(form["code"].FirstOrDefault() ?? "");
|
||||||
data.IdToken = form["id_token"].FirstOrDefault() ?? "";
|
data.IdToken = Uri.UnescapeDataString(form["id_token"].FirstOrDefault() ?? "");
|
||||||
data.State = form["state"].FirstOrDefault();
|
data.State = Uri.UnescapeDataString(form["state"].FirstOrDefault() ?? "");
|
||||||
if (form.ContainsKey("user"))
|
if (form.ContainsKey("user"))
|
||||||
data.RawData = form["user"].FirstOrDefault();
|
data.RawData = Uri.UnescapeDataString(form["user"].FirstOrDefault() ?? "");
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user