mirror of
https://github.com/LBPUnion/ProjectLighthouse.git
synced 2025-07-13 16:51:27 +00:00
* Add proper ban page upon logging in * Remove two extra line break tags that don't need to be there * Fix timestamp formatting * Properly display timestamps in correct timezone * Fix formatting issues with ban page * Remove extra parenthesis which would be rendered on-page * Add to redirect middleware to prevent navigating to other pages * Small nitpick, renaming UserBannedPage to BannedUserPage * Resolve nitpicks from reviewers * Remove un-necessary log message in LoginForm * Fix ban reason translatable string argument * Word choice nitpick ("Ban Created" -> "Ban Issued") * Final adjustments and nitpicks, visual and grammatical * Resolve requested changes from reviewers
58 lines
No EOL
2.1 KiB
C#
58 lines
No EOL
2.1 KiB
C#
#nullable enable
|
|
using JetBrains.Annotations;
|
|
using LBPUnion.ProjectLighthouse.Database;
|
|
using LBPUnion.ProjectLighthouse.Helpers;
|
|
using LBPUnion.ProjectLighthouse.Servers.Website.Pages.Layouts;
|
|
using LBPUnion.ProjectLighthouse.Types.Entities.Level;
|
|
using LBPUnion.ProjectLighthouse.Types.Entities.Profile;
|
|
using LBPUnion.ProjectLighthouse.Types.Levels;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace LBPUnion.ProjectLighthouse.Servers.Website.Pages;
|
|
|
|
public class LandingPage : BaseLayout
|
|
{
|
|
public List<SlotEntity>? LatestTeamPicks;
|
|
public List<SlotEntity>? NewestLevels;
|
|
|
|
public int PendingAuthAttempts;
|
|
public List<UserEntity> PlayersOnline = new();
|
|
|
|
public LandingPage(DatabaseContext database) : base(database)
|
|
{ }
|
|
|
|
[UsedImplicitly]
|
|
public async Task<IActionResult> OnGet()
|
|
{
|
|
UserEntity? user = this.Database.UserFromWebRequest(this.Request);
|
|
if (user != null && user.PasswordResetRequired) return this.Redirect("~/passwordResetRequired");
|
|
|
|
if (user != null)
|
|
this.PendingAuthAttempts =
|
|
await this.Database.PlatformLinkAttempts.CountAsync(l => l.UserId == user.UserId);
|
|
|
|
List<int> userIds = await this.Database.LastContacts.Where(l => TimeHelper.Timestamp - l.Timestamp < 300)
|
|
.Select(l => l.UserId)
|
|
.ToListAsync();
|
|
|
|
this.PlayersOnline = await this.Database.Users.Where(u => userIds.Contains(u.UserId)).ToListAsync();
|
|
|
|
const int maxShownLevels = 5;
|
|
|
|
this.LatestTeamPicks = await this.Database.Slots.Where(s => s.Type == SlotType.User && !s.SubLevel)
|
|
.Where(s => s.TeamPick)
|
|
.OrderByDescending(s => s.FirstUploaded)
|
|
.Take(maxShownLevels)
|
|
.Include(s => s.Creator)
|
|
.ToListAsync();
|
|
|
|
this.NewestLevels = await this.Database.Slots.Where(s => s.Type == SlotType.User && !s.SubLevel)
|
|
.OrderByDescending(s => s.FirstUploaded)
|
|
.Take(maxShownLevels)
|
|
.Include(s => s.Creator)
|
|
.ToListAsync();
|
|
|
|
return this.Page();
|
|
}
|
|
} |