Files
moadiran/Back/Controllers/UserController.cs
mmrbnjd 319270d567 ...
2024-04-29 18:15:46 +03:30

89 lines
3.7 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Back.Data.Models;
using Back.Services;
using Back.Validations;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Shared.DTOs;
namespace Back.Controllers
{
[Route("api/[controller]")]
[Authorize]
[ApiController]
public class UserController : ControllerBase
{
private readonly servUser _servUser;
private readonly servCompany _servCompany;
private readonly MobileValidation _mobilevalidation;
private readonly ServValidatinMsg _servValidatinMsg;
private readonly servSendMsg _servSendMsg;
public UserController(servUser servUser, MobileValidation mobilevalidation, servCompany servCompany
, ServValidatinMsg servValidatinMsg, servSendMsg servSendMsg)
{
_servUser = servUser;
_mobilevalidation = mobilevalidation;
_servCompany = servCompany;
_servValidatinMsg = servValidatinMsg;
_servSendMsg = servSendMsg;
}
[HttpPost("authenticate")]
[AllowAnonymous]
public async Task<ActionResult<UserAuthenticationDTO>> Login([FromBody]Authentication model)
{
var result = await _servUser.UserAuthentication(model.Username, model.Password);
if (result != null) return Ok(result);
else return NotFound("کاربری با این مشخصات یافت نشد");
}
[HttpGet("CheckAuthenticate")]
public async Task<ActionResult<UserAuthenticationDTO>> CheckAuthenticate()
{
// var accessToken = Request.Headers["Authorization"].ToString().Split(' ')[1];
var claim = HttpContext.User.Claims.First(c => c.Type == "UserID");
var UserID = claim.Value;
var result = await _servUser.UserAuthentication(UserID,newtoken:false);
return Ok(result);
}
[HttpPost("ChangePassword")]
public async Task<ActionResult<bool>> ChangePassword(ChangePasswordDto item)
{
if (item.newPass.Trim() != item.renewPass.Trim())
return BadRequest(new List<string> { "تکرار کلمه عبور با کلمه عبور مطابقت ندارد" });
if (item.newPass.Trim().Length <= 3)
return BadRequest(new List<string> { "کلمه عبور جدید باید بیشتر از 3کاراکتر باشد" });
var UserID = HttpContext.User.Claims.First(c => c.Type == "UserID").Value;
if (!await _servUser.PermissionChangePassword(item.oldPass.Trim(), Convert.ToInt32(UserID)))
return BadRequest(new List<string> { "کلمه عبور قبلی صحیح نمی باشد" });
return Ok(await _servUser.ChangePassword(item.newPass.Trim(), Convert.ToInt32(UserID)));
}
[HttpGet("ChangeUserName/{newUsername}")]
public async Task<ActionResult<bool>> ChangeUserName(string newUsername)
{
var resultValidationmodel = await _mobilevalidation.ValidateAsync(Tuple.Create(newUsername, ActionMobileValidation.nonExistMobile));
if (!resultValidationmodel.IsValid)
return BadRequest(resultValidationmodel.Errors.Select(s => s.ErrorMessage).ToList());
var UserID = HttpContext.User.Claims.First(c => c.Type == "UserID").Value;
var ID = await _servValidatinMsg.GenerateCode(new VerificationCode
{
prm = UserID,
val = newUsername,
Type = "ChangeUserName"
});
_servSendMsg.Authentication(newUsername, ID.ToString());
return Ok(ID);
// return Ok(await _servUser.ChangeUserName(newUsername, Convert.ToInt32(UserID)));
}
}
}