Compare commits

...

4 Commits

  1. 13
      Controllers/HomeController.cs
  2. 2
      Pages/Index.cshtml
  3. 7
      Pages/_Layout.cshtml
  4. 19
      Source/Model.cs
  5. 18
      Source/Startup.cs
  6. 5
      Views/Home/Index.cshtml
  7. 56
      Views/Shared/_Layout.cshtml
  8. 0
      Views/_ViewImports.cshtml
  9. 0
      Views/_ViewStart.cshtml

13
Controllers/HomeController.cs

@ -0,0 +1,13 @@
using System;
using Microsoft.AspNetCore.Mvc;
namespace QuickCHAT.Controllers {
[Controller]
public class HomeController : Controller
{
public ActionResult Index()
{
return View();
}
}
}

2
Pages/Index.cshtml

@ -1,2 +0,0 @@
@page
<h1>Hello, World!</h1>

7
Pages/_Layout.cshtml

@ -1,7 +0,0 @@
<!DOCTYPE html>
<head>
<title>@ViewData["Title"] - QuickCHAT</title>
</head>
<body>
@RenderBody()
</body>

19
Source/Model.cs

@ -1,25 +1,28 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
namespace QuickCHAT.Models {
public class DatabaseContext : DbContext {
namespace QuickCHAT.Models
{
public class DatabaseContext : DbContext
{
public DbSet<User> Users { get; set; }
public DatabaseContext(DbContextOptions<DatabaseContext> options) : base(options)
{}
{ }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{ }
}
protected override void OnModelCreating(ModelBuilder modelBuilder) {
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<User>()
.HasAlternateKey(u => u.Username)
.HasName("AK_Username");
}
}
public class User {
public class User
{
public int UserID { get; set; }
public string Username { get; set; }
public string Password { get; set; }

18
Source/Startup.cs

@ -2,6 +2,7 @@
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authentication.Cookies;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
@ -16,7 +17,8 @@ namespace QuickCHAT
{
public IConfiguration Configuration { get; }
public Startup(IConfiguration configuration) {
public Startup(IConfiguration configuration)
{
Configuration = configuration;
}
@ -30,6 +32,9 @@ namespace QuickCHAT
options => options.UseNpgsql(Configuration.GetConnectionString("MainDatabase"))
)
.BuildServiceProvider();
services.AddAntiforgery();
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(options => options.LoginPath = new PathString("/authorize"));
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
@ -38,12 +43,17 @@ namespace QuickCHAT
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
} else {
}
else
{
app.UseHsts();
app.UseHttpsRedirection();
}
app.UseMvc();
app.UseAuthentication();
app.UseMvc(routes =>
{
routes.MapRoute("default", "{controller=Home}/{action=Index}");
});
}
}
}

5
Views/Home/Index.cshtml

@ -0,0 +1,5 @@
@page
@{
ViewBag.Title = "Index";
}
<h1>QuickCHAT</h1>

56
Views/Shared/_Layout.cshtml

@ -0,0 +1,56 @@
<!DOCTYPE html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>@ViewData["Title"] - QuickCHAT</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script>
</head>
<body>
@if(ViewData["HideNavbar"] == null)
{
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<a class="navbar-brand" href="/">QuickCHAT</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#top-bar" aria-controls="top-bar" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="top-bar">
<ul class="navbar-nav mr-auto">
</ul>
<ul class="navbar-nav">
@if(User.Identity.IsAuthenticated)
{
<li class="nav-item">
<span class="navbar-text">@@@User.Identity.Name</span>
</li>
<li class="nav-item">
<a class="nav-link" href="/unauthorize">Log out</a>
</li>
}
else
{
<li class="nav-item">
<a class="nav-link" href="/register">Register</a>
</li>
<li class="nav-item">
<span class="navbar-text">or</span>
</li>
<li class="nav-item">
<a class="nav-link" href="/authorize">Log in</a>
</li>
}
</ul>
</div>
</nav>
}
<div class="container">
@RenderBody()
</div>
</body>

0
Pages/_ViewImports.cshtml → Views/_ViewImports.cshtml

0
Pages/_ViewStart.cshtml → Views/_ViewStart.cshtml

Loading…
Cancel
Save