Skip to content

Commit

Permalink
Implement Authentication
Browse files Browse the repository at this point in the history
  • Loading branch information
gitfullstacker committed Dec 9, 2023
1 parent f0a20f4 commit 78dba75
Show file tree
Hide file tree
Showing 20 changed files with 1,166 additions and 182 deletions.
40 changes: 40 additions & 0 deletions taskmaster-api/Controllers/AuthController.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using taskmaster_api.Data.DTOs;
using taskmaster_api.Services.Interface;

namespace taskmaster_api.Controllers
{
[Route("api/[controller]")]
[ApiController]
public class AuthController : ApplicationControllerBase
{
private readonly IAuthService _authService;

public AuthController(IAuthService authService)
{
_authService = authService;
}

[HttpPost("login")]
[AllowAnonymous]
public IActionResult Login(LoginDto loginDto)
{
return ToHttpResult<LoginResponseDto>(_authService.Login(loginDto));
}

[HttpPost("register")]
[AllowAnonymous]
public IActionResult Register(RegisterDto registerDto)
{
return ToHttpResult<RegisterDto>(_authService.Register(registerDto));
}

[HttpPost("register-admin")]
[AllowAnonymous]
public IActionResult RegisterAdmin(RegisterDto registerDto)
{
return ToHttpResult<RegisterDto>(_authService.RegisterAdmin(registerDto));
}
}
}
24 changes: 11 additions & 13 deletions taskmaster-api/Controllers/TaskController.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,7 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Http.HttpResults;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
using taskmaster_api.Data.DTOs;
using taskmaster_api.Data.DTOs.Interface;
using taskmaster_api.Data.Entities;
using taskmaster_api.Data.Repositories.Interface;
using taskmaster_api.Services;
using taskmaster_api.Data.Models;
using taskmaster_api.Services.Interface;

namespace taskmaster_api.Controllers
Expand All @@ -14,35 +10,37 @@ namespace taskmaster_api.Controllers
[ApiController]
public class TaskController : ApplicationControllerBase
{
private readonly ITaskAppService _taskAppService;
private readonly ITaskService _taskService;

public TaskController(ITaskAppService taskAppService)
public TaskController(ITaskService taskService)
{
_taskAppService = taskAppService;
_taskService = taskService;
}

[HttpGet("{id}")]
[Authorize]
public IActionResult GetTask(int id)
{
return ToHttpResult<TaskDto>(_taskAppService.GetTaskById(id));
return ToHttpResult<TaskDto>(_taskService.GetTaskById(id));
}

[HttpPost]
public IActionResult CreateTask(TaskDto taskDto)
{
return ToHttpResult<TaskDto>(_taskAppService.CreateTask(taskDto));
return ToHttpResult<TaskDto>(_taskService.CreateTask(taskDto));
}

[HttpPut("{id}")]
[Authorize(Roles = UserRoles.Admin)]
public IActionResult UpdateTask(int id, TaskDto taskDto)
{
return ToHttpResult<TaskDto>(_taskAppService.UpdateTask(id, taskDto));
return ToHttpResult<TaskDto>(_taskService.UpdateTask(id, taskDto));
}

[HttpDelete("{id}")]
public IActionResult DeleteTask(int id)
{
return ToHttpResult(_taskAppService.DeleteTask(id));
return ToHttpResult(_taskService.DeleteTask(id));
}
}
}
6 changes: 3 additions & 3 deletions taskmaster-api/Data/Contexts/ApplicationDbContext.cs
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
using taskmaster_api.Data.Entities;

namespace taskmaster_api.Data.Contexts
{
public class ApplicationDbContext : DbContext
public class ApplicationDbContext : IdentityDbContext
{
public ApplicationDbContext(DbContextOptions options) : base(options)
{
}

public virtual DbSet<UserEntity> Users { get; set; }
public virtual DbSet<TaskEntity> Tasks { get; set; }
}
}
13 changes: 13 additions & 0 deletions taskmaster-api/Data/DTOs/LoginDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
using System.ComponentModel.DataAnnotations;

namespace taskmaster_api.Data.DTOs
{
public class LoginDto
{
[Required(ErrorMessage = "User Name is required")]
public string? Username { get; set; }

[Required(ErrorMessage = "Password is required")]
public string? Password { get; set; }
}
}
8 changes: 8 additions & 0 deletions taskmaster-api/Data/DTOs/LoginResponseDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace taskmaster_api.Data.DTOs
{
public class LoginResponseDto
{
public string Token { get; set; }
public DateTime Expiration { get; set; }
}
}
17 changes: 17 additions & 0 deletions taskmaster-api/Data/DTOs/RegisterDto.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
using System.ComponentModel.DataAnnotations;

namespace taskmaster_api.Data.DTOs
{
public class RegisterDto
{
[Required(ErrorMessage = "User Name is required")]
public string? Username { get; set; }

[EmailAddress]
[Required(ErrorMessage = "Email is required")]
public string? Email { get; set; }

[Required(ErrorMessage = "Password is required")]
public string? Password { get; set; }
}
}
23 changes: 0 additions & 23 deletions taskmaster-api/Data/Entities/UserEntity.cs

This file was deleted.

8 changes: 8 additions & 0 deletions taskmaster-api/Data/Models/UserRoles.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
namespace taskmaster_api.Data.Models
{
public static class UserRoles
{
public const string Admin = "Admin";
public const string User = "User";
}
}
75 changes: 0 additions & 75 deletions taskmaster-api/Migrations/20231207132920_InitialCreate.Designer.cs

This file was deleted.

54 changes: 0 additions & 54 deletions taskmaster-api/Migrations/20231207132920_InitialCreate.cs

This file was deleted.

Loading

0 comments on commit 78dba75

Please sign in to comment.