aboutsummaryrefslogtreecommitdiff
path: root/backend/api/api/Controllers/AuthController.cs
blob: f70146eda955eeb66c25fe30bd4708f0eb6cac0e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
using api.Models.Users;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using api.Services;
using Microsoft.AspNetCore.Authorization;
using Microsoft.Net.Http.Headers;
using System.Net.Http.Headers;
using api.Models;

namespace api.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class AuthController : ControllerBase
    {
        private IAuthService _auth;
        private IJwtToken _jwtToken;
        public AuthController(IAuthService auth, IJwtToken Token)
        {
            _auth = auth;
            _jwtToken = Token;
        }

        [HttpPost("register")]
        public async Task<ActionResult<string>> Register(RegisterRequest user)
        {
            string id=getUserId();
            if (id == null)
                return BadRequest();
            return Ok(_auth.Register(user,id));
        }

        [HttpPost("login")]
        public async Task<ActionResult<string>> Login(AuthRequest user)
        {
            
            return Ok(_auth.Login(user));
        }
        [HttpPost("guestToken")]
        public async Task<ActionResult<string>> guestToken()
        {

            return Ok(_auth.GuestToken());
        }

        [HttpGet("Auth")]
        [Authorize(Roles ="User")]
        public async Task<ActionResult<string>> TestAuth()
        {
            return Ok("works");
        }

        [HttpPost("renewJwt")]
        [Authorize(Roles = "User,Guest")]
        public async Task<ActionResult<string>> RenewJwt() {
            var authorization = Request.Headers[HeaderNames.Authorization];
            
            var newToken=_auth.RenewToken(authorization);
            if(newToken== null)
                return BadRequest();
            return Ok(newToken);


        }

        public string getUserId()
        {
            string uploaderId;
            var header = Request.Headers[HeaderNames.Authorization];
            if (AuthenticationHeaderValue.TryParse(header, out var headerValue))
            {
                var scheme = headerValue.Scheme;
                var parameter = headerValue.Parameter;
                uploaderId = _jwtToken.TokenToId(parameter);
                if (uploaderId == null)
                    return null;
            }
            else
                return null;

            return uploaderId;
        }



    }
}