source: iknow-api/Controllers/AuthController.cs@ af4f801

Last change on this file since af4f801 was 4b35197, 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 
[277bd72]1using iknow_api.DTOs;
2using iknow_api.Services;
[e49c3ed]3using Microsoft.AspNetCore.Authorization;
[5b42c8d]4using Microsoft.AspNetCore.Mvc;
[c7d4a59]5
[277bd72]6namespace iknow_api.Controllers
[5b42c8d]7{
8 [ApiController]
9 [Route("api/[controller]")]
10 public class AuthController : ControllerBase
11 {
12 private readonly IAuthService _authService;
[3347c1b]13 private readonly IRefreshTokenService _refreshTokenService;
[5b42c8d]14
[3347c1b]15 public AuthController(IAuthService authService, IRefreshTokenService refreshTokenService)
[5b42c8d]16 {
17 _authService = authService;
[3347c1b]18 _refreshTokenService = refreshTokenService;
[5b42c8d]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")]
[c7d4a59]36 public async Task<IActionResult> Register([FromBody] RegisterDto request)
[5b42c8d]37 {
[c2f79d7]38 try
39 {
[4b35197]40 await _authService.RegisterAsync(request);
[c2f79d7]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 }
[5b42c8d]51 }
52
53 [HttpPost("login")]
[c7d4a59]54 public async Task<IActionResult> Login([FromBody] LoginDto request)
[5b42c8d]55 {
[4b35197]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 });
[5b42c8d]65 }
[e49c3ed]66
67 [Authorize]
68 [HttpGet("getstring")]
[4b35197]69 public IActionResult getstring()
[e49c3ed]70 {
71 return Ok(new { message = "You are authorized!" });
72 }
[3347c1b]73
[c155364]74 [HttpPost("verify-user-token")]
75 public async Task<IActionResult> VerifyToken([FromBody] VerifyRefreshTokenDto verifyRefreshToken)
[3347c1b]76 {
[c155364]77 if (await _refreshTokenService.VerifyRefreshToken(verifyRefreshToken))
[4b35197]78 {
79 return Ok(await _authService.GenerateNewJWT(verifyRefreshToken));
80 }
81
82 return BadRequest(new { message = "No token found!" });
[3347c1b]83 }
[c2f79d7]84
[5b42c8d]85 }
86}
Note: See TracBrowser for help on using the repository browser.