source: iknow-api/Controllers/AuthController.cs

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