Exemplo n.º 1
0
        public ActionResult Login(AuthModels.Login model)
        {
            if (ModelState.IsValid)
            {
                string token = null;
                try
                {
                    token = HarmonyLogin.GetUserAuthToken(model.Username, model.Password);
                }
                catch { }

                if (string.IsNullOrEmpty(token))
                {
                    ModelState.AddModelError("Username", "Invalid username or password");
                }

                if (ModelState.IsValid)
                {
                    using (var manager = new Manager())
                    {
                        var user = manager.Users
                                   .FirstOrDefault(o => o.HarmonyUsername == model.Username);

                        if (user == null)
                        {
                            user = new User()
                            {
                                HarmonyUsername = model.Username
                            };
                        }

                        user.HarmonyPassword = "";
                        user.HarmonyToken    = token;
                        user.AlexaToken      = RandomString(50);
                        user.AlexaUserID     = "";
                        user.Hostname        = model.Hostname;

                        manager.SaveChanges();

                        string url = ConfigurationManager.AppSettings["AuthUrl"]
                                     + "#state=" + Url.Encode(model.State)
                                     + "&access_token=" + Url.Encode(user.AlexaToken)
                                     + "&token_type=Bearer";

                        return(Redirect(url));
                    }
                }
            }

            return(View(model));
        }
Exemplo n.º 2
0
        public ActionResult Network(AuthModels.Network model)
        {
            if (ModelState.IsValid)
            {
                bool success = false;
                try
                {
                    var conn        = new HarmonyClientConnection(model.Hostname, 5222);
                    var manualEvent = new ManualResetEvent(false);
                    conn.ClientSocket.OnConnect += (obj) =>
                    {
                        success = true;
                        manualEvent.Set();
                    };
                    conn.OnSocketError += (obj, ex) =>
                    {
                        manualEvent.Set();
                    };
                    try
                    {
                        conn.Open();
                        manualEvent.WaitOne(5000);
                    }
                    finally
                    {
                        try { conn.Close(); } catch { }
                    }
                }
                catch { }

                if (!success)
                {
                    ModelState.AddModelError("Hostname", "Your Harmony Hub could not be reached");
                }

                if (ModelState.IsValid)
                {
                    var model2 = new AuthModels.Login
                    {
                        State    = model.State,
                        Hostname = Request.UserHostAddress
                    };

                    return(View("Login", model2));
                }
            }

            return(View(model));
        }
Exemplo n.º 3
0
        public IActionResult Login([FromBody] AuthModels.Login login)
        {
            // login
            var res = this.Authservice.Login(login.Username, login.Password);

            if (res.Success)
            {
                // set auth key for session
                SetAuth(res.UserId, res.AuthKey);

                return(SuccessResponse("/account"));
            }
            // return error
            return(ErrorResponse(res.Errors));
        }
Exemplo n.º 4
0
        public async Task <IActionResult> Login([FromBody] AuthModels.Login login)
        {
            // login
            var res = await Authservice.Login(login.Username, login.Password);

            if (res.Success)
            {
                // set auth key for session
                SetAuth(res.UserId, res.AuthKey);

                // return to listing screen on login
                return(SuccessResponse("/employee/listing"));
            }

            // return error
            return(ErrorResponse(res.Errors));
        }