コード例 #1
0
        public string Login(LoginMessage message)
        {
            if (!message.IsValid())
            {
                throw HttpResponseExceptionHelper.Create("Information manquante pour authentification.", HttpStatusCode.BadRequest);
            }

            using (var db = new SystemDBContext())
            {
                var user          = new UserModel();
                var facebookLogin = false;

                // login with facebook
                if (!string.IsNullOrWhiteSpace(message.FacebookId))
                {
                    user          = db.Users.FirstOrDefault(x => x.FacebookId == message.FacebookId);
                    facebookLogin = true;
                }
                // login with Credentials
                else
                {
                    user = db.Users.FirstOrDefault(x => x.Username == message.Username);
                }

                if (user == null)
                {
                    throw HttpResponseExceptionHelper.Create("usager invalide.", HttpStatusCode.BadRequest);
                }

                // Connect with user credentials
                if (!facebookLogin)
                {
                    if (!PasswordHash.ValidatePassword(message.Password, user.Password))
                    {
                        throw HttpResponseExceptionHelper.Create("Information invalides pour la connexion.", HttpStatusCode.Forbidden);
                    }
                }

                var hashId = user.HashId;
                //if(ConnexionWebsocket.ConnectedUsersHash.Contains(hashId))
                //throw HttpResponseExceptionHelper.Create("L'Usager est déjà connecter.", HttpStatusCode.Forbidden);
                return(GetToken(user));
            }
        }