public String actionGetNewTokenByUsernameAndPassword(String username, String password)
        {
            String encrypted_password = new AuthenticationController().getEncryptedString(password);
            User user = data.Users.Where(o => o.username == username && o.password == encrypted_password).SingleOrDefault();
            if (user == null) {
                return null;
            }

            var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
            var random = new Random();
            String token = new string(Enumerable.Repeat(chars, 20)
                          .Select(s => s[random.Next(s.Length)])
                          .ToArray());

            OAuth oauth = new OAuth();
            oauth.user_obj = user.id;
            oauth.access_token = token;

            data.OAuths.AddObject(oauth);
            if (data.SaveChanges() == 1) {
                return token;
            }
            else {
                return null;
            }
        }
        protected void actionLoginButtonClicked(object sender, EventArgs e)
        {
            AuthenticationController authController = new AuthenticationController();
            User user = authController.actionCheckLoginData(ui_username_textbox.Text, ui_password_textbox.Text);
            if (user == null)
            {
                Response.Cookies.Add(new HttpCookie("flash_message", "Username or Password is incorrect.") { Path = "/" });
                Response.Cookies.Add(new HttpCookie("flash_css", "alert alert-error") { Path = "/" });
                //Response.Redirect("~");
                return;
            }

            Session["user"] = null;
            Session["user"] = user;

            redirectByUserType(user.user_type);
        }
 public Message actionCreateUser(User objIn)
 {
     AuthenticationController authController = new AuthenticationController();
     try
     {
         User user = data.Users.Where(o => (o.username == objIn.username)).FirstOrDefault();
         if (user != null) {
             return new Message(false, "Username already taken! User create failed.");
         }
         objIn.password = authController.getEncryptedString(objIn.password);
         data.Users.AddObject(objIn);
         return this.getNewDefaultMessageForDBOperations(data.SaveChanges() == 1);
     }
     catch (Exception e)
     {
         return this.getNewDefaultMessageForException(e);
     }
 }
        public void get_access_token(HttpContext context)
        {
            String username = context.Request.Form["username"];
            String password = context.Request.Form["password"];

            OAuthController oauthController = new OAuthController();
            OAuthViewModel oauth = new OAuthViewModel();
            oauth.access_token = "";
            User user = new AuthenticationController().actionCheckLoginData(username, password);
            System.Diagnostics.Debug.WriteLine("User:"******"  ,type:" + user.user_type);
            if (user != null)
            {
                if ((user.user_type == 1) || (user.user_type == 2))
                {
                    oauth.access_token = oauthController.actionGetNewTokenByUsernameAndPassword(username, password);
                }
            }
            System.Diagnostics.Debug.WriteLine(JsonConvert.SerializeObject(oauth));
            context.Response.Write(JsonConvert.SerializeObject(oauth));
        }
        public Message actionCreateUser(User objIn)
        {
            AuthenticationController authController = new AuthenticationController();

            try
            {
                User user = data.Users.Where(o => (o.username == objIn.username)).FirstOrDefault();
                if (user != null)
                {
                    return(new Message(false, "Username already taken! User create failed."));
                }
                objIn.password = authController.getEncryptedString(objIn.password);
                data.Users.AddObject(objIn);
                return(this.getNewDefaultMessageForDBOperations(data.SaveChanges() == 1));
            }
            catch (Exception e)
            {
                return(this.getNewDefaultMessageForException(e));
            }
        }
        protected void Page_Load(object sender, EventArgs e)
        {
            String username = Request.Form["username"];
            String password = Request.Form["password"];

            AuthenticationController authController = new AuthenticationController();
            User user = authController.actionCheckLoginData(username, password);
            if (user == null || (user.user_type != 1 && user.user_type != 2))
            {
                Response.Cookies.Add(new HttpCookie("flash_message", "Invilid Login.") { Path = "/" });
                Response.Cookies.Add(new HttpCookie("flash_css", "alert alert-error") { Path = "/" });
                Response.Redirect("~/m/Login.aspx");
                return;
            }

            Session["user"] = null;
            Session["user"] = user;

            redirectByUserType(user.user_type);
        }
        public Message actionUpdateUser(User objIn)
        {
            AuthenticationController authController = new AuthenticationController();
            try
            {
                User user = data.Users.Where(o => o.id == objIn.id).Single();
                //objIn.EntityKey = data.Users.Where(o => o.id == objIn.id).Single().EntityKey;

                //user.username = objIn.username;
                user.password = authController.getEncryptedString(objIn.password);
                user.firstname = objIn.firstname;
                user.lastname = objIn.lastname;
                user.email = objIn.email;
                user.phone_number = objIn.phone_number;
                user.department = objIn.department;
                user.user_type = objIn.user_type;

                //data.Users.ApplyCurrentValues(user);
                data.SaveChanges();
                return this.getNewDefaultMessageForDBOperations(true);
            }
            catch (Exception e)
            {
                return this.getNewDefaultMessageForException(e);
            }
        }
        public void get_access_token(HttpContext context)
        {
            String username = context.Request.Form["username"];
            String password = context.Request.Form["password"];

            OAuthController oauthController = new OAuthController();
            OAuthViewModel oauth = new OAuthViewModel();
            oauth.access_token = "";
            User user = new AuthenticationController().actionCheckLoginData(username, password);
            if (user != null) {
                if (user.user_type == 5 || user.user_type == 6){
                    oauth.access_token = oauthController.actionGetNewTokenByUsernameAndPassword(username, password);
                }
            }

            context.Response.Write(JsonConvert.SerializeObject(oauth));
        }