Skip to content

Commit 840154c

Browse files
authored
Merge pull request #181 from TechnologyEnhancedLearning/Develop/Fixes/TD-3734-Reverting-the-changes
TD-3734: Reverting the changes
2 parents b8c36d4 + 0f43fca commit 840154c

File tree

9 files changed

+22
-143
lines changed

9 files changed

+22
-143
lines changed

Auth/LearningHub.Nhs.Auth/Controllers/AccountController.cs

Lines changed: 21 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System.Linq;
66
using System.Net;
77
using System.Threading.Tasks;
8-
using Azure.Core;
98
using elfhHub.Nhs.Models.Common;
109
using elfhHub.Nhs.Models.Enums;
1110
using IdentityModel;
@@ -23,11 +22,9 @@
2322
using LearningHub.Nhs.Models.Common;
2423
using Microsoft.AspNetCore.Authentication;
2524
using Microsoft.AspNetCore.Authorization;
26-
using Microsoft.AspNetCore.Http;
2725
using Microsoft.AspNetCore.Mvc;
2826
using Microsoft.Extensions.Logging;
2927
using Microsoft.Extensions.Options;
30-
using UAParser;
3128

3229
/// <summary>
3330
/// Account Controller operations.
@@ -166,44 +163,34 @@ await this.interaction.GrantConsentAsync(
166163

167164
if (loginResult.IsAuthenticated)
168165
{
169-
var uaParser = Parser.GetDefault();
170-
var clientInfo = uaParser.Parse(this.Request.Headers["User-Agent"]);
171-
var result = await this.UserService.CheckUserHasAnActiveSessionAsync(userId);
172-
if (result.Items.Count == 0 || result.Items[0].BrowserName == clientInfo.UA.Family)
173-
{
174-
await this.SignInUser(userId, model.Username.Trim(), model.RememberLogin, context.Parameters["ext_referer"]);
166+
await this.SignInUser(userId, model.Username.Trim(), model.RememberLogin, context.Parameters["ext_referer"]);
175167

176-
if (context != null)
168+
if (context != null)
169+
{
170+
if (await this.ClientStore.IsPkceClientAsync(context.Client.ClientId))
177171
{
178-
if (await this.ClientStore.IsPkceClientAsync(context.Client.ClientId))
179-
{
180-
// if the client is PKCE then we assume it's native, so this change in how to
181-
// return the response is for better UX for the end user.
182-
return this.View("Redirect", new RedirectViewModel { RedirectUrl = model.ReturnUrl });
183-
}
184-
185-
// we can trust model.ReturnUrl since GetAuthorizationContextAsync returned non-null
186-
return this.Redirect(model.ReturnUrl);
172+
// if the client is PKCE then we assume it's native, so this change in how to
173+
// return the response is for better UX for the end user.
174+
return this.View("Redirect", new RedirectViewModel { RedirectUrl = model.ReturnUrl });
187175
}
188176

189-
// request for a local page
190-
if (this.Url.IsLocalUrl(model.ReturnUrl))
191-
{
192-
return this.Redirect(model.ReturnUrl);
193-
}
194-
else if (string.IsNullOrEmpty(model.ReturnUrl))
195-
{
196-
return this.Redirect("~/");
197-
}
198-
else
199-
{
200-
// user might have clicked on a malicious link - should be logged
201-
throw new Exception("invalid return URL");
202-
}
177+
// we can trust model.ReturnUrl since GetAuthorizationContextAsync returned non-null
178+
return this.Redirect(model.ReturnUrl);
179+
}
180+
181+
// request for a local page
182+
if (this.Url.IsLocalUrl(model.ReturnUrl))
183+
{
184+
return this.Redirect(model.ReturnUrl);
185+
}
186+
else if (string.IsNullOrEmpty(model.ReturnUrl))
187+
{
188+
return this.Redirect("~/");
203189
}
204190
else
205191
{
206-
return this.View("AlreadyActiveSession");
192+
// user might have clicked on a malicious link - should be logged
193+
throw new Exception("invalid return URL");
207194
}
208195
}
209196
else if (userId > 0)

Auth/LearningHub.Nhs.Auth/Interfaces/IUserService.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,6 @@ public interface IUserService
114114
/// </returns>
115115
Task StoreUserHistoryAsync(UserHistoryViewModel userHistory);
116116

117-
/// <summary>
118-
/// check user has an laredy active session.
119-
/// </summary>
120-
/// <param name="userId">The userId.</param>
121-
/// <returns>The <see cref="Task"/>.</returns>
122-
Task<PagedResultSet<UserHistoryViewModel>> CheckUserHasAnActiveSessionAsync(int userId);
123-
124117
/// <summary>
125118
/// The store user history async.
126119
/// </summary>

Auth/LearningHub.Nhs.Auth/Services/UserService.cs

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -243,29 +243,5 @@ public async Task StoreUserHistoryAsync(UserHistoryViewModel userHistory)
243243
}
244244
}
245245
}
246-
247-
/// <inheritdoc/>
248-
public async Task<PagedResultSet<UserHistoryViewModel>> CheckUserHasAnActiveSessionAsync(int userId)
249-
{
250-
PagedResultSet<UserHistoryViewModel> userHistoryViewModel = new PagedResultSet<UserHistoryViewModel>();
251-
252-
var client = this.UserApiHttpClient.GetClient();
253-
var request = $"UserHistory/CheckUserHasActiveSession/{userId}";
254-
var response = await client.GetAsync(request).ConfigureAwait(false);
255-
256-
if (response.IsSuccessStatusCode)
257-
{
258-
var result = await response.Content.ReadAsStringAsync();
259-
userHistoryViewModel = JsonConvert.DeserializeObject<PagedResultSet<UserHistoryViewModel>>(result);
260-
}
261-
else if (response.StatusCode == HttpStatusCode.Unauthorized
262-
||
263-
response.StatusCode == HttpStatusCode.Forbidden)
264-
{
265-
throw new Exception("AccessDenied");
266-
}
267-
268-
return userHistoryViewModel;
269-
}
270246
}
271247
}

Auth/LearningHub.Nhs.Auth/Views/Account/AlreadyActiveSession.cshtml

Lines changed: 0 additions & 15 deletions
This file was deleted.

LearningHub.Nhs.UserApi.Repository.Interface/IUserHistoryRepository.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,12 +59,5 @@ public interface IUserHistoryRepository
5959
/// The <see cref="Task"/>.
6060
/// </returns>
6161
Task<UserHistoryStoredProcResults> GetPagedByUserIdAsync(int userId, int startPage, int pageSize);
62-
63-
/// <summary>
64-
/// Check user has an active login session.
65-
/// </summary>
66-
/// <param name="userId">The userId.</param>
67-
/// <returns>The <see cref="Task"/>.</returns>
68-
Task<UserHistoryStoredProcResults> CheckUserHasActiveSessionAsync(int userId);
6962
}
7063
}

LearningHub.Nhs.UserApi.Repository/UserHistoryRepository.cs

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
using LearningHub.Nhs.UserApi.Repository.Interface;
1010
using Microsoft.Data.SqlClient;
1111
using Microsoft.EntityFrameworkCore;
12-
using Newtonsoft.Json.Linq;
1312

1413
/// <summary>
1514
/// The user history repository.
@@ -67,13 +66,11 @@ public async Task CreateAsync(int userId, int tenantId, UserHistoryViewModel use
6766
new SqlParameter("@LoginIP", SqlDbType.VarChar) { Value = userHistoryVM.LoginIP ?? (object)DBNull.Value },
6867
new SqlParameter("@LoginSuccessFul", SqlDbType.Bit) { Value = userHistoryVM.LoginSuccessFul ?? (object)DBNull.Value },
6968
new SqlParameter("@TenantId", SqlDbType.Int) { Value = tenantId },
70-
new SqlParameter("@SessionId", SqlDbType.VarChar) { Value = (userHistoryVM.UserHistoryTypeId == 0 && userHistoryVM.Detail == "User logged on. Source of auth: LearningHub.Nhs.Auth Account\\Login") ? userHistoryVM.SessionId : (object)DBNull.Value },
71-
new SqlParameter("@IsActive", SqlDbType.Bit) { Value = (userHistoryVM.UserHistoryTypeId == 0 && userHistoryVM.Detail == "User logged on. Source of auth: LearningHub.Nhs.Auth Account\\Login") ? userHistoryVM.IsActive : (object)DBNull.Value },
7269
new SqlParameter("@AmendUserId", SqlDbType.Int) { Value = userId },
7370
new SqlParameter("@AmendDate", SqlDbType.DateTimeOffset) { Value = DateTimeOffset.Now },
7471
};
7572

76-
string sql = "proc_UserHistoryInsert @UserId, @UserHistoryTypeId, @Detail, @UserAgent, @BrowserName, @BrowserVersion, @UrlReferer, @LoginIP, @LoginSuccessFul, @TenantId, @SessionId, @IsActive, @AmendUserId, @AmendDate";
73+
string sql = "proc_UserHistoryInsert @UserId, @UserHistoryTypeId, @Detail, @UserAgent, @BrowserName, @BrowserVersion, @UrlReferer, @LoginIP, @LoginSuccessFul, @TenantId, @AmendUserId, @AmendDate";
7774

7875
await this.DbContext.Database.ExecuteSqlRawAsync(sql, sqlParams);
7976
}
@@ -101,24 +98,5 @@ public async Task<UserHistoryStoredProcResults> GetPagedByUserIdAsync(int userId
10198

10299
return retVal;
103100
}
104-
105-
/// <inheritdoc/>
106-
public async Task<UserHistoryStoredProcResults> CheckUserHasActiveSessionAsync(int userId)
107-
{
108-
try
109-
{
110-
var retVal = new UserHistoryStoredProcResults();
111-
var param0 = new SqlParameter("@p0", SqlDbType.Int) { Value = userId };
112-
113-
var result = await this.DbContext.Set<UserHistoryStoredProcResult>().FromSqlRaw(
114-
"dbo.proc_ActiveLearningHubUserbyId @p0", param0).AsNoTracking().ToListWithNoLockAsync();
115-
retVal.Results = result;
116-
return retVal;
117-
}
118-
catch (Exception ex)
119-
{
120-
return null;
121-
}
122-
}
123101
}
124102
}

LearningHub.Nhs.UserApi.Services.Interface/IUserHistoryService.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -53,12 +53,5 @@ public interface IUserHistoryService
5353
/// The <see cref="Task"/>.
5454
/// </returns>
5555
Task<PagedResultSet<UserHistoryViewModel>> GetUserHistoryPageAsync(int page, int pageSize, string sortColumn = "", string sortDirection = "", string presetFilter = "", string filter = "");
56-
57-
/// <summary>
58-
/// Check user has an active login session.
59-
/// </summary>
60-
/// <param name="userId">The userId.</param>
61-
/// <returns>The <see cref="Task"/>.</returns>
62-
Task<PagedResultSet<UserHistoryViewModel>> CheckUserHasActiveSessionAsync(int userId);
6356
}
6457
}

LearningHub.Nhs.UserApi.Services/UserHistoryService.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
namespace LearningHub.Nhs.UserApi.Services
22
{
3-
using System;
43
using System.Collections.Generic;
54
using System.Linq;
65
using System.Threading.Tasks;
@@ -57,8 +56,6 @@ public async Task<LearningHubValidationResult> CreateAsync(UserHistoryViewModel
5756

5857
if (retVal.IsValid)
5958
{
60-
userHistoryVM.SessionId = Guid.NewGuid().ToString();
61-
userHistoryVM.IsActive = true;
6259
await this.userHistoryRepository.CreateAsync(userHistoryVM.UserId, this.settings.LearningHubTenantId, userHistoryVM);
6360
}
6461

@@ -102,16 +99,6 @@ public async Task<PagedResultSet<UserHistoryViewModel>> GetUserHistoryPageAsync(
10299
return result;
103100
}
104101

105-
/// <inheritdoc/>
106-
public async Task<PagedResultSet<UserHistoryViewModel>> CheckUserHasActiveSessionAsync(int userId)
107-
{
108-
PagedResultSet<UserHistoryViewModel> result = new PagedResultSet<UserHistoryViewModel>();
109-
var userHistory = await this.userHistoryRepository.CheckUserHasActiveSessionAsync(userId);
110-
userHistory.Results.ForEach(x => x.UserAgent = this.ParseUserAgentString(x.UserAgent));
111-
result.Items = this.mapper.Map<List<UserHistoryViewModel>>(userHistory.Results);
112-
return result;
113-
}
114-
115102
private string ParseUserAgentString(string userAgent)
116103
{
117104
string retVal = string.Empty;

LearningHub.Nhs.UserApi/Controllers/UserHistoryController.cs

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -100,19 +100,6 @@ public async Task<IActionResult> GetUserHistoryPageAsync(int page, int pageSize,
100100
return this.Ok(pagedResultSet);
101101
}
102102

103-
/// <summary>
104-
/// Check the user has an active login session.
105-
/// </summary>
106-
/// <param name="userId">The UserId.</param>
107-
/// <returns>The <see cref="Task"/>.</returns>
108-
[HttpGet]
109-
[Route("CheckUserHasActiveSession/{userId}")]
110-
public async Task<IActionResult> CheckUserHasActiveSessionAsync(int userId)
111-
{
112-
PagedResultSet<UserHistoryViewModel> pagedResultSet = await this.userHistoryService.CheckUserHasActiveSessionAsync(userId);
113-
return this.Ok(pagedResultSet);
114-
}
115-
116103
/// <summary>
117104
/// Create a UserHistory.
118105
/// </summary>

0 commit comments

Comments
 (0)