mirror of
https://github.com/ryzij/URL-Shortener.git
synced 2026-07-14 03:56:58 +00:00
Compare commits
2 Commits
99973eba04
...
4a4ee24ce7
| Author | SHA1 | Date | |
|---|---|---|---|
| 4a4ee24ce7 | |||
| e55c54e75d |
@@ -3,6 +3,7 @@ using Microsoft.EntityFrameworkCore;
|
||||
using URL_Shortener.DTO;
|
||||
using URL_Shortener.Models;
|
||||
using HashidsNet;
|
||||
using Microsoft.AspNetCore.Authorization;
|
||||
|
||||
namespace URL_Shortener.Controllers
|
||||
{
|
||||
@@ -78,12 +79,15 @@ namespace URL_Shortener.Controllers
|
||||
}
|
||||
|
||||
[HttpDelete("{id:int}")]
|
||||
[Authorize]
|
||||
public async Task<IActionResult> DeleteShortUrlByIdAsync(int id)
|
||||
{
|
||||
var shortUrl = await _db.ShortUrls.FindAsync(id);
|
||||
if (shortUrl == null)
|
||||
return NotFound();
|
||||
|
||||
// TODO: определение пользователя по jwt
|
||||
|
||||
_db.ShortUrls.Remove(shortUrl);
|
||||
|
||||
var clickInfos = _db.ClickInfos.Where(c => c.ShortUrlId == id);
|
||||
|
||||
@@ -13,8 +13,8 @@ namespace URL_Shortener.Controllers
|
||||
[HttpPost("register")]
|
||||
public async Task<IActionResult> RegisterAsync(RegisterUserDTO dto)
|
||||
{
|
||||
await _userService.RegisterAsync(dto.Name, dto.Email, dto.Password);
|
||||
return Ok();
|
||||
var jwt = await _userService.RegisterAsync(dto.Name, dto.Email, dto.Password);
|
||||
return Ok(jwt);
|
||||
}
|
||||
|
||||
[HttpPost("login")]
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.AspNetCore.Authentication.JwtBearer;
|
||||
using URL_Shortener;
|
||||
using URL_Shortener.Services;
|
||||
using URL_Shortener.Settings;
|
||||
using Microsoft.IdentityModel.Tokens;
|
||||
using System.Text;
|
||||
|
||||
var builder = WebApplication.CreateBuilder(args);
|
||||
|
||||
@@ -18,7 +21,20 @@ builder.Services.AddSingleton<HashidsNet.Hashids>();
|
||||
|
||||
builder.Services.AddScoped<UserService>();
|
||||
builder.Services.AddScoped<JwtService>();
|
||||
builder.Services.Configure<AuthSettings>(builder.Configuration.GetSection("AuthSettings"));
|
||||
|
||||
var authSettings = builder.Configuration.GetSection("AuthSettings");
|
||||
builder.Services.Configure<AuthSettings>(authSettings);
|
||||
|
||||
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
|
||||
.AddJwtBearer(o => o.TokenValidationParameters = new()
|
||||
{
|
||||
ValidateIssuerSigningKey = true,
|
||||
ValidateIssuer = true,
|
||||
ValidateAudience = false,
|
||||
ValidateLifetime = true,
|
||||
IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(
|
||||
authSettings.Get<AuthSettings>().SecretKey))
|
||||
});
|
||||
|
||||
builder.Services.AddDbContext<AppDbContext>(options =>
|
||||
{
|
||||
@@ -47,6 +63,7 @@ using (var scope = app.Services.CreateScope())
|
||||
|
||||
//app.UseHttpsRedirection();
|
||||
|
||||
app.UseAuthentication();
|
||||
app.UseAuthorization();
|
||||
|
||||
app.MapControllers();
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace URL_Shortener.Services
|
||||
private readonly AppDbContext _db = db;
|
||||
private readonly JwtService _jwtService = jwtService;
|
||||
|
||||
public async Task RegisterAsync(string userName, string email, string password, CancellationToken cancellationToken = default)
|
||||
public async Task<string> RegisterAsync(string userName, string email, string password, CancellationToken cancellationToken = default)
|
||||
{
|
||||
if (await _db.Users.FirstOrDefaultAsync(u => u.Email == email, cancellationToken) != null)
|
||||
throw new Exception("This user already exists.");
|
||||
@@ -23,6 +23,8 @@ namespace URL_Shortener.Services
|
||||
|
||||
await _db.Users.AddAsync(user, cancellationToken);
|
||||
await _db.SaveChangesAsync(cancellationToken);
|
||||
|
||||
return _jwtService.GenerateToken(user);
|
||||
}
|
||||
|
||||
public async Task<string> LoginAsync(string email, string password, CancellationToken cancellationToken = default)
|
||||
|
||||
Reference in New Issue
Block a user