source: iknow-api/Controllers/AuthController.cs@ 1b20b22

Last change on this file since 1b20b22 was ce1f8d4, checked in by Stefan-Saveski <stefansaveski19@…>, 8 months ago

Added role to sign in.

  • Property mode set to 100644
File size: 2.7 KB
RevLine 
[271178d]1using iknow_api.DTOs;
2using iknow_api.Services;
[5eb7847]3using Microsoft.AspNetCore.Authorization;
[fc7b4b4]4using Microsoft.AspNetCore.Mvc;
[cb8e531]5
[271178d]6namespace iknow_api.Controllers
[fc7b4b4]7{
8 [ApiController]
9 [Route("api/[controller]")]
10 public class AuthController : ControllerBase
11 {
12 private readonly IAuthService _authService;
[4e061d8]13 private readonly IRefreshTokenService _refreshTokenService;
[fc7b4b4]14
[4e061d8]15 public AuthController(IAuthService authService, IRefreshTokenService refreshTokenService)
[fc7b4b4]16 {
17 _authService = authService;
[4e061d8]18 _refreshTokenService = refreshTokenService;
[fc7b4b4]19 }
20
21 [HttpGet("testdb")]
22 public async Task<IActionResult> TestDb()
23 {
24 try
25 {
26 var count = await _authService.GetUsersCountAsync();
27 return Ok(new { message = "DB connection works!", usersCount = count });
28 }
29 catch (Exception ex)
30 {
31 return BadRequest(new { message = "DB connection failed", error = ex.Message });
32 }
33 }
34
35 [HttpPost("register")]
[cb8e531]36 public async Task<IActionResult> Register([FromBody] RegisterDto request)
[fc7b4b4]37 {
[f0fc386]38 try
39 {
[ce1f8d4]40 await _authService.RegisterAsync(request);
[f0fc386]41 return Ok("User registered successfully");
42 }
43 catch (InvalidOperationException ex)
44 {
45 return BadRequest(new { message = ex.Message });
46 }
47 catch (Exception ex)
48 {
49 return StatusCode(500, new { message = "An error occurred during registration", error = ex.Message });
50 }
[fc7b4b4]51 }
52
53 [HttpPost("login")]
[cb8e531]54 public async Task<IActionResult> Login([FromBody] LoginDto request)
[fc7b4b4]55 {
[ce1f8d4]56 var result = await _authService.LoginAsync(request);
57 if (result == null) return Unauthorized("Invalid credentials");
58
59 return Ok(new
60 {
61 token = result.AccessToken,
62 refreshToken = result.RefreshToken,
63 role = result.Role
64 });
[fc7b4b4]65 }
[5eb7847]66
67 [Authorize]
68 [HttpGet("getstring")]
[ce1f8d4]69 public IActionResult getstring()
[5eb7847]70 {
71 return Ok(new { message = "You are authorized!" });
72 }
[4e061d8]73
[1e58098]74 [HttpPost("verify-user-token")]
75 public async Task<IActionResult> VerifyToken([FromBody] VerifyRefreshTokenDto verifyRefreshToken)
[4e061d8]76 {
[1e58098]77 if (await _refreshTokenService.VerifyRefreshToken(verifyRefreshToken))
[ce1f8d4]78 {
79 return Ok(await _authService.GenerateNewJWT(verifyRefreshToken));
80 }
81
82 return BadRequest(new { message = "No token found!" });
[4e061d8]83 }
[f0fc386]84
[fc7b4b4]85 }
86}
Note: See TracBrowser for help on using the repository browser.