aboutsummaryrefslogtreecommitdiff
path: root/Backend/Api/Api/Controllers/AuthController.cs
blob: d835d9720b92b9834d1991d833613be3cac324ca (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
using Api.Interfaces;
using Api.Models;
using Microsoft.AspNetCore.Mvc;

namespace Api.Controllers
{
    [Route("api/auth/")]
    public class AuthController : Controller
    {
        private readonly IUserService _userService;
        public AuthController(IUserService userService)
        {
            _userService = userService;
        }

        [HttpPost("register")]
        public async Task<ActionResult<string>> Register([FromBody] Register creds)
        {
            //this is beyond scuffed and will be cleaned up later, when users,login and controllers are made
            User novi = new User();
            novi.email = creds.email;
            novi.password = creds.password;
            novi.username = creds.username;
            novi.name = creds.name;
            novi.verified = true;
            novi.creationDate = DateTime.Now.ToUniversalTime();
            novi._id = "";

            int ret= await _userService.createUser(novi);
            if (ret == -1)
                return BadRequest("email already exists");
            if (ret == -2)
                return BadRequest("username already exists");

            return Ok();
        }
        [HttpPost("login")]
        public async Task<ActionResult<string>> Login([FromBody] Login creds)
        {
            var id = await _userService.UserIdFromJwt();
            if (id != null) return Forbid();

            var jwt= await _userService.Login(creds);
            if (jwt != null)
            {
                return Ok(jwt);
            }
            return BadRequest("Pogresno uneti podaci");
        }
        [HttpPost("registeractual")]
        public async Task<ActionResult<string>> RegisterActual([FromBody] Register creds)
        {
            var msg = await _userService.Register(creds);
            if (msg == "Email Exists")
                return Forbid(msg);
            if (msg == "Username Exists")
                return Forbid(msg);
            return Ok(msg);
        }
        [HttpPost("verify")]
        public async Task<ActionResult<string>> VerifyEmail([FromBody] VerifyUser creds)
        {
            var uspeh = await _userService.VerifyUser(creds);
            if (!uspeh)
                return BadRequest("Kod netacan ili istekao");
            return Ok("Uspesno verifikovan");
        }
        [HttpPost("resetpass")]
        public async Task<ActionResult<string>> ResetPass([FromBody] ResetPass creds)
        {
            var uspeh = await _userService.ResetPassword(creds);
            if (!uspeh)
                return BadRequest("Kod netacan ili istekao");
            return Ok("Sifra uspesno resetovana");
        }
    }
}