Skip to content

Commit 565a4f2

Browse files
committed
[WIP] Login endpoint
1 parent 56595a0 commit 565a4f2

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

src/TravelBlog/Controllers/AdminApiController.cs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,22 +4,44 @@
44
using System.Text.Json.Serialization;
55
using System.Threading.Tasks;
66
using Microsoft.AspNetCore.Authorization;
7+
using Microsoft.AspNetCore.Http;
78
using Microsoft.AspNetCore.Mvc;
89
using Microsoft.EntityFrameworkCore;
10+
using Microsoft.Extensions.Options;
11+
using TravelBlog.Configuration;
912
using TravelBlog.Database;
1013
using TravelBlog.Database.Entities;
1114
using TravelBlog.Extensions;
15+
using TravelBlog.Services;
1216

1317
namespace TravelBlog.Controllers;
1418

1519
[ApiController]
1620
public class AdminApiController : ControllerBase
1721
{
22+
private readonly IOptions<SiteOptions> options;
1823
private readonly DatabaseContext database;
24+
private readonly AuthenticationService authentication;
1925

20-
public AdminApiController(DatabaseContext database)
26+
public AdminApiController(IOptions<SiteOptions> options, DatabaseContext database, AuthenticationService authentication)
2127
{
28+
this.options = options;
2229
this.database = database;
30+
this.authentication = authentication;
31+
}
32+
33+
[HttpPost]
34+
public async Task<IActionResult> Login(LoginRequest request)
35+
{
36+
if (request.Password == options.Value.AdminPassword)
37+
{
38+
await authentication.SignInAsync(HttpContext, "admin", Constants.AdminRole);
39+
return StatusCode(StatusCodes.Status204NoContent);
40+
}
41+
else
42+
{
43+
return StatusCode(StatusCodes.Status401Unauthorized);
44+
}
2345
}
2446

2547
[HttpGet("~/api/admin/subscribers")]
@@ -51,6 +73,8 @@ public async Task<IActionResult> EditSubscriber(int id, [FromBody] JsonSubscribe
5173
return StatusCode(204);
5274
}
5375

76+
public record LoginRequest(string Password);
77+
5478
public class JsonSubscriber
5579
{
5680
[JsonConstructor]

0 commit comments

Comments
 (0)