| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- using AutoMapper;
- using Diligent.WebAPI.Business.Services;
- using Diligent.WebAPI.Data.Entities;
- using Diligent.WebAPI.Host.DTOs.Customer;
- using Microsoft.AspNetCore.Http;
- using Microsoft.AspNetCore.Identity;
- using Microsoft.AspNetCore.Mvc;
-
- namespace Diligent.WebAPI.Host.Controllers
- {
- [ApiVersion("1.0")]
- [ApiController]
- [Route("v{version:apiVersion}/[controller]")]
- public class CustomerController : ControllerBase
- {
- // sifra za svakog od user-a je "Nekasifra123!"
- private readonly UserManager<Customer> _customerManager;
- private readonly RoleManager<Roles> _roleManager;
- private readonly IAuthenticationService _authenticationService;
- private readonly IMapper _mapper;
- private readonly ICustomerService _customerService;
-
- public CustomerController(UserManager<Customer> customerManager, RoleManager<Roles> roleManager, IAuthenticationService authenticationService,
- IMapper mapper, ICustomerService customerService)
- {
- _customerManager = customerManager;
- _roleManager = roleManager;
- _authenticationService = authenticationService;
- _mapper = mapper;
- _customerService = customerService;
- }
- [HttpPost("login")]
- public async Task<ActionResult<CustomerReadDTO>> Login(CustomerLoginDTO customerLoginDTO)
- {
- if (!await _authenticationService.ValidateCustomer(customerLoginDTO.Username, customerLoginDTO.Password))
- return BadRequest("Authentication failed.Wrong Username or password");
-
- Customer customer = await _customerService.GetCustomer(customerLoginDTO.Username);
- var customerReadDTO = _mapper.Map<CustomerReadDTO>(customer);
- customerReadDTO.Token = await _authenticationService.GenerateToken();
- customerReadDTO.Roles = (List<string>)await _customerManager.GetRolesAsync(customer);
- return customerReadDTO;
- }
-
- [HttpPost("addRole")]
- public async Task<ActionResult> CreateRole(string name)
- {
- IdentityResult result = await _roleManager.CreateAsync(new Roles() { Name = name });
-
- if (!result.Succeeded)
- {
- foreach (IdentityError error in result.Errors)
- ModelState.AddModelError("", error.Description);
-
- return BadRequest(ModelState);
- }
-
- return StatusCode(201);
- }
-
- [HttpPost("register")]
- public async Task<ActionResult<CustomerReadDTO>> Register(CustomerCreateDTO customerCreateDTO)
- {
- Customer customer = new()
- {
- FirstName = customerCreateDTO.FirstName,
- LastName = customerCreateDTO.LastName,
- Email = customerCreateDTO.Email,
- UserName = customerCreateDTO.Username
- };
-
- var result = await _customerManager.CreateAsync(customer, customerCreateDTO.Password);
- await _customerManager.AddToRoleAsync(customer, "Support");
-
- if (!result.Succeeded)
- {
- foreach (IdentityError error in result.Errors)
- ModelState.AddModelError("", error.Description);
-
- return BadRequest(ModelState);
- }
- await _authenticationService.ValidateCustomer(customer.UserName,customerCreateDTO.Password);
- var customerReadDTO = _mapper.Map<CustomerReadDTO>(customer);
- customerReadDTO.Token = await _authenticationService.GenerateToken();
- customerReadDTO.Roles = (List<string>)await _customerManager.GetRolesAsync(customer);
-
- return customerReadDTO;
- }
- }
- }
|