Browse Source

Updated authentication

dev
Benjamin Arhen 1 year ago
parent
commit
d3e5d10e6b
  1. 1
      .gitignore
  2. 2
      Client/Elements/Headbar.razor
  3. 56
      Server/Services/AuthenticationService.cs

1
.gitignore

@ -363,3 +363,4 @@ MigrationBackup/
# Fody - auto-generated XML schema # Fody - auto-generated XML schema
FodyWeavers.xsd FodyWeavers.xsd
/Server/.config/dotnet-tools.json /Server/.config/dotnet-tools.json
/Server/.config/dotnet-tools.json

2
Client/Elements/Headbar.razor

@ -28,7 +28,7 @@
<div id="Profile" @onclick="@ToggleDropdown"> <div id="Profile" @onclick="@ToggleDropdown">
<i class="bx bxs-user fs-4 lh-0"></i> <i class="bx bxs-user fs-4 lh-0"></i>
<ul class=@m_dropDownClass style="width: 150px;"> <ul class=@m_dropDownClass style="width: 150px;right: 5px;">
<li><a href="#">Profile</a></li> <li><a href="#">Profile</a></li>
<li><a href="#">Account</a></li> <li><a href="#">Account</a></li>
<li><a href="#">Settings</a></li> <li><a href="#">Settings</a></li>

56
Server/Services/AuthenticationService.cs

@ -1,4 +1,5 @@
using Biskilog_Accounting.Shared.ClientContractModels; using BCrypt.Net;
using Biskilog_Accounting.Shared.ClientContractModels;
using Biskilog_Accounting.Shared.Enums; using Biskilog_Accounting.Shared.Enums;
using Biskilog_Accounting.Shared.Interfaces; using Biskilog_Accounting.Shared.Interfaces;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
@ -55,7 +56,7 @@ namespace Biskilog_Accounting.Server.Services
List<int> businessIds = GetSiteaccesspermission(user.ClientId, user.UserId).Select(t => t.BusinessId).ToList(); List<int> businessIds = GetSiteaccesspermission(user.ClientId, user.UserId).Select(t => t.BusinessId).ToList();
Contract? contract = GetContract(user.ClientId, businessIds); Contract? contract = GetContract(user.ClientId, businessIds);
List<string> businesses = GetClientbusiness(user.ClientId, user.UserId).Select(t=>t.BusinessExternalId).ToList(); List<string> businesses = GetClientbusiness(user.ClientId, user.UserId).Select(t => t.BusinessExternalId).ToList();
if (contract == null) if (contract == null)
return AuthEnums.Invalid.ToString(); return AuthEnums.Invalid.ToString();
@ -98,9 +99,9 @@ namespace Biskilog_Accounting.Server.Services
public List<Clientbusiness> GetClientbusiness(int a_clientId, int userId) public List<Clientbusiness> GetClientbusiness(int a_clientId, int userId)
{ {
return (from b in m_context.Clientbusinesses return (from b in m_context.Clientbusinesses
join p in m_context.Siteaccesspermissions on new {b.ClientId, b.BusinessId} equals new {p.ClientId, p.BusinessId} join p in m_context.Siteaccesspermissions on new { b.ClientId, b.BusinessId } equals new { p.ClientId, p.BusinessId }
where p.UserId == userId && p.ClientId == a_clientId where p.UserId == userId && p.ClientId == a_clientId
select b).ToList(); select b).ToList();
} }
public Databasemap GetClientDB(int a_clientId) public Databasemap GetClientDB(int a_clientId)
@ -118,28 +119,33 @@ namespace Biskilog_Accounting.Server.Services
return m_context.Siteaccesspermissions.Where(t => t.ClientId == a_clientId && t.UserId == a_userId).ToList(); return m_context.Siteaccesspermissions.Where(t => t.ClientId == a_clientId && t.UserId == a_userId).ToList();
} }
private async Task<Userauth> GetUserAsync(string username, string password) private async Task<Userauth?> GetUserAsync(string username, string password)
{ {
//Todo have complete implementation after means of creating user is done //Todo have complete implementation after means of creating user is done
//try try
//{ {
// string pa = await m_context.Userauths.Where(u => u.Username == username).Select(u => u.Password).FirstAsync(); string? pa = await m_context.Userauths.Where(u => u.Username == username || u.Email == username).Select(u => u.Passsword).FirstOrDefaultAsync();
// bool verified = BCrypt.Net.BCrypt.Verify(password, pa);
// if (verified) if (String.IsNullOrEmpty(pa))
// { {
return null;
//TODO have a complete implementation }
return await m_context.Userauths.FirstAsync(u => u.Username == username && u.Passsword == password); bool verified = BCrypt.Net.BCrypt.Verify(password, pa);
// } if (verified)
// else {
// {
// return null; return await m_context.Userauths.FirstAsync(u => u.Username == username || u.Email == username);
// } }
//}catch(Exception ex) else
//{ {
// //possible is user not found return null;
// return null; }
//} }
catch (Exception ex)
{
//possible is user not found
return null;
}
} }
} }
} }

Loading…
Cancel
Save