예제 #1
0
        public HttpResponseMessage LoginUser(LoginUserModel model)
        {
            return this.ExecuteOperationAndHandleExceptions(() =>
            {
                if (model == null)
                {
                    throw new FormatException("invalid username and/or password");
                }

                UserPersister.ValidateLoginUser(model);

                var context = new GameContext();

                var user = context.Users.FirstOrDefault(u => u.Username == model.Username.ToLower()
                    && u.AuthCode == model.AuthCode);

                if (user == null)
                {
                    throw new InvalidOperationException("Invalid username or password");
                }

                if (user.SessionKey == null)
                {
                    user.SessionKey = UserPersister.GenerateSessionKey(user.Id);
                    context.SaveChanges();
                }

                var responseModel = new UserResponseModel()
                {
                    Nickname = user.Nickname,
                    SesionKey = user.SessionKey
                };

                var response = this.Request.CreateResponse(HttpStatusCode.OK, responseModel);
                return response;
            });
        }
예제 #2
0
 public static void ValidateLoginUser(LoginUserModel model)
 {
     ValidateAuthCode(model.AuthCode);
     ValidateUsername(model.Username);
 }