53223b0bef
+ Added change language API + Added Role to user info
75 lines
2.4 KiB
C#
75 lines
2.4 KiB
C#
using System.Web.Http;
|
|
using static Step.Utils.Constants;
|
|
using Step.Database.Controllers;
|
|
using System;
|
|
using Step.Model.DatabaseModels;
|
|
using System.Security.Claims;
|
|
using System.Linq;
|
|
using static Step.Utils.LanguageController;
|
|
using Step.Model.DTOModels;
|
|
using System.Globalization;
|
|
|
|
namespace Step.Controllers.WebApi
|
|
{
|
|
[RoutePrefix("api/user")]
|
|
public class UserController : ApiController
|
|
{
|
|
[Route("register"), HttpPost]
|
|
public IHttpActionResult CreateUser(UserModel model)
|
|
{
|
|
UsersController users = new UsersController();
|
|
users.Create(model.Username, model.Password, model.FirstName, model.LastName, model.Language);
|
|
return Ok();
|
|
}
|
|
|
|
[Route("info"), HttpGet]
|
|
[WebApiAuthorize(FunctionAccess = "userData", Action = ACTIONS.READ)]
|
|
public IHttpActionResult UserInfo()
|
|
{
|
|
var identity = User.Identity as ClaimsIdentity;
|
|
|
|
var userId = identity.Claims.Where(c => c.Type == USER_ID_KEY).SingleOrDefault();
|
|
if (userId == null)
|
|
return Unauthorized();
|
|
|
|
using (UsersController userController = new UsersController())
|
|
{
|
|
return Ok(userController.GetUserInfo(Convert.ToInt32(userId.Value)));
|
|
}
|
|
}
|
|
|
|
[Route("language"), HttpPut]
|
|
[WebApiAuthorize(FunctionAccess = "userData", Action = ACTIONS.READ)]
|
|
public IHttpActionResult PutUserLanguage([FromBody] dynamic user)
|
|
{
|
|
// If no body return 400
|
|
if (user == null)
|
|
return BadRequest();
|
|
|
|
// Validate user id
|
|
var identity = User.Identity as ClaimsIdentity;
|
|
var userId = identity.Claims.Where(c => c.Type == USER_ID_KEY).SingleOrDefault();
|
|
|
|
if (userId == null)
|
|
return Unauthorized();
|
|
|
|
// Parse body data and validate language
|
|
var newLanguage = (string)user.language;
|
|
|
|
if (newLanguage == null || !IsValidLanguage(newLanguage))
|
|
return BadRequest();
|
|
|
|
if (!LanguageIsAvailable(newLanguage))
|
|
return NotFound();
|
|
|
|
|
|
using (UsersController userController = new UsersController())
|
|
{
|
|
userController.ChangeUserLanguage(Convert.ToInt32(userId.Value), CultureInfo.CreateSpecificCulture(newLanguage));
|
|
|
|
return Ok();
|
|
}
|
|
}
|
|
}
|
|
}
|