Merge pull request #461 from iceljc/bugfix/refine-login

refine log in
This commit is contained in:
C. Oceania 2024-05-20 12:00:03 -05:00 committed by GitHub
commit 186cdad2c6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 5 additions and 5 deletions

View file

@ -6,6 +6,6 @@ public interface IUserService
{
Task<User> GetUser(string id);
Task<User> CreateUser(User user);
Task<Token> GetToken(string authorization);
Task<Token?> GetToken(string authorization);
Task<User> GetMyProfile();
}

View file

@ -1,4 +1,3 @@
using BotSharp.Abstraction.Repositories;
using BotSharp.Abstraction.Users.Models;
using Microsoft.Extensions.Configuration;
using Microsoft.IdentityModel.Tokens;
@ -60,7 +59,7 @@ public class UserService : IUserService
return record;
}
public async Task<Token> GetToken(string authorization)
public async Task<Token?> GetToken(string authorization)
{
var base64 = Encoding.UTF8.GetString(Convert.FromBase64String(authorization));
var (id, password) = base64.SplitAsTuple(":");
@ -72,13 +71,14 @@ public class UserService : IUserService
record = db.GetUserByUserName(id);
}
User? user = null;
var hooks = _services.GetServices<IAuthenticationHook>();
if (record == null || record.Source != "internal")
{
// check 3rd party user
foreach (var hook in hooks)
{
var user = await hook.Authenticate(id, password);
user = await hook.Authenticate(id, password);
if (user == null)
{
continue;
@ -109,7 +109,7 @@ public class UserService : IUserService
}
}
if (record == null)
if ((!hooks.IsNullOrEmpty() && user == null) || record == null)
{
return default;
}