public HttpResponseMessage LoginUser([FromBody]UserLoginModel user)
{
HttpResponseMessage responseMessage = this.PerformOperation(() =>
{
UserValidator.ValidateAuthenticationCode(user.AuthCode);
UserValidator.ValidateUsername(user.Username);
var context = new BloggingSystemContext();
using (context)
{
var userEntity = context.Users.FirstOrDefault(
u => u.AuthCode == user.AuthCode && u.Username == user.Username.ToLower());
if (userEntity == null)
{
throw new InvalidOperationException("User not registered!");
}
userEntity.SessionKey = UserValidator.GenerateSessionKey(userEntity.ID);
context.SaveChanges();
UserLoggedModel loggedUser = UsersMapper.ToModel(userEntity);
return this.Request.CreateResponse(HttpStatusCode.Created, loggedUser);
}
});
return responseMessage;
}