1 Commits

Author SHA1 Message Date
e3cd44422c Merge pull request 'Feature/Auth: implement user authentication' (#3) from feature/auth into main
All checks were successful
Build and Deploy API / build-and-deploy (push) Successful in 4s
Build and Deploy Frontend / build-and-deploy (push) Successful in 4s
Reviewed-on: #3
2026-03-22 20:52:22 -05:00
4 changed files with 2 additions and 93 deletions

View File

@@ -21,15 +21,13 @@ builder.Services.AddDbContext<AppDbContext>(options =>
builder.Services.AddControllers();
// services
builder.Services.AddScoped<UserService>();
builder.Services.AddScoped<ItemService>();
builder.Services.AddScoped<JwtService>();
// configuration for jwt authentication
builder.Services.AddIdentity<User, IdentityRole>()
.AddEntityFrameworkStores<AppDbContext>()
.AddDefaultTokenProviders()
.AddRoles<IdentityRole>();
.AddDefaultTokenProviders();
builder.Services.AddAuthentication(options => {
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;

View File

@@ -1,50 +0,0 @@
// this is basically a demo on roles
// level 0 can't access the users endpoint at all
// level 1 has read permissions
// level 2 has modify permissions
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Authorization;
using agologumApi.Models;
using agologumApi.Services;
[ApiController]
[Route("api/[controller]")]
public class UsersController : ControllerBase {
private readonly UserService service_;
public UsersController(UserService service) {
service_ = service;
}
[Authorize(Roles = "Admin, Superuser")]
[HttpGet]
public async Task<ActionResult<List<User>>> getUsers() {
return Ok(await service_.GetAll());
}
[Authorize(Roles = "Admin, Superuser")]
[HttpGet("{id:int}")]
public async Task<ActionResult<User>> getUser(int id) {
var user = await service_.Get(id);
if (user == null) return NotFound();
return Ok(user);
}
[Authorize(Roles = "Superuser")]
[HttpDelete("{id}")]
public async Task<ActionResult> deleteUser(int id) {
var success = await service_.Delete(id);
if (!success) return NotFound();
return NoContent();
}
}

View File

@@ -10,7 +10,7 @@ public class AppDbContext : IdentityDbContext<User> {
}
// Db set for each model besides Users (DbSet<User> is already defined in IdentityDbContext<User>)
// Db set for each model besides Users (DbSet<template> is already defined in IdenityDbContext<template>)
public DbSet<Item> Items { get; set; }
public DbSet<RefreshToken> RefreshTokens { get; set; }

View File

@@ -1,39 +0,0 @@
using Microsoft.EntityFrameworkCore;
using agologumApi.Models;
namespace agologumApi.Services;
public class UserService {
private readonly AppDbContext db_;
public UserService(AppDbContext db) {
db_ = db;
}
public async Task<List<User>> GetAll() {
return await db_.Users.ToListAsync();
}
public async Task<User?> Get(int id) {
return await db_.Users.FindAsync(id);
}
public async Task<User?> Get(string name) {
return await db_.Users.FirstOrDefaultAsync(u => u.UserName == name);
}
public async Task<bool> Delete(int id) {
User? User = await db_.Users.FindAsync(id);
if(User != null) {
db_.Users.Remove(User);
await db_.SaveChangesAsync();
return true;
} else {
return false;
}
}
}