diff options
Diffstat (limited to 'backend/api')
-rw-r--r-- | backend/api/api/Controllers/UserController.cs | 31 |
1 files changed, 26 insertions, 5 deletions
diff --git a/backend/api/api/Controllers/UserController.cs b/backend/api/api/Controllers/UserController.cs index 58121656..dcab53cc 100644 --- a/backend/api/api/Controllers/UserController.cs +++ b/backend/api/api/Controllers/UserController.cs @@ -2,7 +2,9 @@ using api.Services; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using Microsoft.Net.Http.Headers; using System.Diagnostics; +using System.Net.Http.Headers; // For more information on enabling Web API for empty projects, visit https://go.microsoft.com/fwlink/?LinkID=397860 //dovrsi kontroler @@ -13,10 +15,12 @@ namespace api.Controllers public class UserController : ControllerBase { private readonly IUserService userService; + private JwtToken jwtToken; - public UserController(IUserService userService) + public UserController(IUserService userService, IConfiguration configuration) { this.userService = userService; + jwtToken = new JwtToken(configuration); } // GET: api/<UserController> @@ -38,12 +42,29 @@ namespace api.Controllers return user; } - /* + + + + // GET api/<UserController>/5 //potrebno za profile page - [HttpGet("{id}")] - public ActionResult<User> GetUserUsername(string username) + [HttpGet("myprofile")] + [Authorize(Roles = "User")] + public ActionResult<User> MyProfilePage() { + string username; + var header = Request.Headers[HeaderNames.Authorization]; + if (AuthenticationHeaderValue.TryParse(header, out var headerValue)) + { + var scheme = headerValue.Scheme; + var parameter = headerValue.Parameter; + username = jwtToken.TokenToUsername(parameter); + if (username == null) + return null; + } + else + return BadRequest(); + var user = userService.GetUserUsername(username); if (user == null) @@ -51,7 +72,7 @@ namespace api.Controllers return user; } - */ + // POST api/<UserController> [HttpPost] public ActionResult<User> Post([FromBody] User user) |