コード例 #1
0
        // GET: DriveLetterInfo
        public ActionResult Index(int?idDli)
        {
            var  db           = new tabblesEntities();
            bool utenteEsiste = Logic.auth(db, Session /*, out bool isAdmin, out string username*/, out int?idOrg, out bool?isAdmin, out int?idUtente);

            if (!utenteEsiste /* TODO oppure esiste ma non ha i permessi su questa struttura */)
            {
                return(Redirect(Url.Action("Index", "Login")));
            }


            DriveLetterInfoModel mod;

            if (idDli == null)
            {
                mod = creaModelloDaRequestForm(Request, Session, db);
            }
            else
            {
                // verifica che hai i permessi su quel drive letter info, cioè sia la tua org
                var haipermesi = (from dli in db.driveLetterInfoForTabblesWeb
                                  where dli.idOrg == idOrg.Value
                                  where idDli.Value == dli.id
                                  select dli).Any();

                if (!haipermesi)
                {
                    return(Redirect(Url.Action("Index", "Login")));
                }


                mod = creaModelloDaDb(idDli.Value, Request, Session);
            }
            return(View("DriveLetterInfo", mod));
        }
コード例 #2
0
        static ControlPanelModel faiQuery(tabblesEntities db, int?idOrg)
        {
            var dlis = (from di in db.driveLetterInfoForTabblesWeb
                        where di.idOrg == idOrg.Value
                        select new DriveLetterInfo
            {
                allowDownload = di.allowDowload,
                convertAndroid = di.convertAndroid,
                convertIos = di.convertIos,
                convertLinux = di.convertLinux,
                convertMac = di.convertMac,
                letter = di.letter
                ,
                id = di.id
            }

                        ).ToArray();


            var machn = db.organization
                        .Where(o => o.id == idOrg.Value)
                        .Select(o => o.machineNameToImpersonate)
                        .FirstOrDefault();


            return(new ControlPanelModel
            {
                driveLetterInfos = dlis,
                cur_page = Tabs.ControlPanel,
                machineNameToImpersonate = machn,
            });
        }
コード例 #3
0
ファイル: LoginController.cs プロジェクト: tabbles/TabblesWeb
        public ActionResult DoLogin()
        {
            var db = new tabblesEntities();

            PrefillLogin prefill = findPrefillOfRequest();

            var hashPwd = TabblesWebLogic.Logic.Hash(prefill.pwd.Trim());


            //var utDebug = db.user2.Where(u => u.name == prefill.nomeUtente.Trim()).FirstOrDefault();

            var ut = db.user2.Where(u => u.name == prefill.nomeUtente.Trim()).FirstOrDefault();

            if (ut == null)
            {
                TempData["messaggio"]             = "User not found.";
                TempData["isMessaggioDiSuccesso"] = false;

                var mod = new LoginModel
                {
                    //cur_page = Tabs.Login,
                    prefill = prefill,
                };
                return(View("Login", mod));
            }
            else
            {
                if (hashPwd.Any(ha => Enumerable.SequenceEqual(ut.pwdHash, ha)))                 // non posso farlo in entity framework
                {
                    //string url = Url.Action("Index", "Home", new Autenticazione { nome = ut.nome, pwd = ut.pwd });
                    //RedirectResult redirectResult = base.Redirect(url);
                    //return redirectResult;



                    //var formco = new FormCollection();

                    Session["username"] = ut.name;
                    Session["pwd"]      = prefill.pwd.Trim();
                    Session["isAdmin"]  = ut.is_super_user ? "S" : "N";



                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    TempData["messaggio"]             = "User not found.";
                    TempData["isMessaggioDiSuccesso"] = false;

                    var mod = new LoginModel
                    {
                        //cur_page = Tabs.Login,
                        prefill = prefill,
                    };
                    return(View("Login", mod));
                }
            }
        }
コード例 #4
0
ファイル: AjaxController.cs プロジェクト: tabbles/TabblesWeb
        public IHttpActionResult getTabblesVisibleToUserExceptWs(string uname, string pwd, int sort, int topLevelOnly, int outputTabblesWithInitData, int includeTagsOfSubordinateUsers)
        {
            try
            {
                var db = new tabblesEntities();

                SqlParameter noAuth = null;

                var add = new Action <SqlCommand>(c =>
                {
                    c.Parameters.AddWithValue("@uname", uname);
                    c.Parameters.AddWithValue("@pwd", pwd);
                    c.Parameters.AddWithValue("@sort", sort);
                    c.Parameters.AddWithValue("@topLevelOnly", topLevelOnly);
                    c.Parameters.AddWithValue("@outputTabblesWithInitData", outputTabblesWithInitData == 1 ? true : false);
                    c.Parameters.AddWithValue("@includeTagsOfSubordinateUsers", includeTagsOfSubordinateUsers == 1 ? true : false);


                    noAuth = addOutputParameterInt("@noAuth", c);
                });
                var res = StoredProc.ExecuteStoredProc("getTabblesVisibleToUserExceptWs", add);
                if (res.err == "timeout")
                {
                    return(Ok(new Result {
                        error = "timeout"
                    }));
                }
                else
                {
                    var r = new resultTables(dataTables: res.tables,
                                             noAuth: (int)noAuth.Value,
                                             machineName: null
                                             , obj: null);


                    //var str = Newtonsoft.Json.JsonConvert.SerializeObject(r);

                    return(Ok(new Result {
                        ret = r
                    }));
                }
            }
            catch (Exception e)
            {
                return(Ok(new Result {
                    error = "generic-error", stringOfExc = Utils.stringOfException(e)
                }));
            }
        }
コード例 #5
0
        public ActionResult DeleteDriveLetterInfo(int idDli)
        {
            using (var tr = new TransactionScope())
            {
                var db = new tabblesEntities();


                var isauth = Logic.auth(db, Session, out int?idUtente, out bool?isAdmin, out int?idOrg);

                if (!isauth || isAdmin != true)                 // oppure non è admin
                {
                    giveMessageYouNeedToBeAdmin();
                    return(Redirect(Url.Action("Index", "Login")));
                }


                var te = (from t in db.driveLetterInfoForTabblesWeb
                          where t.id == idDli
                          select t).SingleOrDefault();



                ControlPanelModel mod;
                if (te == null)
                {
                    TempData["messaggio"]             = $"Drive Letter Info  {idDli} does not exist";
                    TempData["isMessaggioDiSuccesso"] = false;

                    mod = faiQuery(db, idOrg);
                }
                else
                {
                    db.driveLetterInfoForTabblesWeb.Remove(te);

                    db.SaveChanges();


                    TempData["messaggio"]             = $"Drive Letter Info {idDli} was deleted.";
                    TempData["isMessaggioDiSuccesso"] = true;

                    mod = faiQuery(db, idOrg);



                    tr.Complete();
                }
                return(View("ControlPanel", mod));
            }
        }
コード例 #6
0
        public ActionResult Index()
        {
            var db     = new tabblesEntities();
            var isauth = Logic.auth(db, Session, out int?idUtente, out bool?isAdmin, out int?idOrg);

            if (!isauth)
            {
                return(Redirect(Url.Action("Index", "Login")));
            }


            var mod = new HomeModel();

            return(View("Home", mod));
        }
コード例 #7
0
ファイル: AjaxController.cs プロジェクト: tabbles/TabblesWeb
        public IHttpActionResult GetUserIdOfNameAndPwd(string userName, string pwd, string machineName)
        {
            try
            {
                var db = new tabblesEntities();

                SqlParameter idUserPar = null;

                var add = new Action <SqlCommand>(c =>
                {
                    c.Parameters.AddWithValue("@userName", userName);
                    c.Parameters.AddWithValue("@pwd", pwd);
                    c.Parameters.AddWithValue("@machineName", machineName);

                    idUserPar = addOutputParameterInt("@idUser", c);
                });
                var res = StoredProc.ExecuteStoredProc("getUserIdOfNameAndPwd", add);
                if (res.err == "timeout")
                {
                    return(Ok(new Result {
                        error = "timeout"
                    }));
                }
                else
                {
                    var idUser = (int)idUserPar.Value;
                    if (idUser == 0)
                    {
                        return(Ok(new Result {
                            ret = "user-not-found"
                        }));
                    }

                    return(Ok(new Result {
                        ret = idUser
                    }));
                }
            }
            catch (Exception e)
            {
                return(Ok(new Result {
                    error = "generic-error", stringOfExc = Utils.stringOfException(e)
                }));
            }
        }
コード例 #8
0
        private static DriveLetterInfoModel creaModelloDaDb(int idDli, HttpRequestBase Request, HttpSessionStateBase Session)
        {
            var db   = new tabblesEntities();
            var serv = (from se in db.driveLetterInfoForTabblesWeb
                        where se.id == idDli
                        select se).Single();

            return(new DriveLetterInfoModel
            {
                id = serv.id,
                letter = serv.letter
                , convertMac = serv.convertMac
                , convertLinux = serv.convertLinux
                , convertIos = serv.convertIos
                , convertAndroid = serv.convertAndroid
                , allowDownload = serv.allowDowload
            });
        }
コード例 #9
0
        // GET: ControlPanel
        public ActionResult Index()
        {
            var db     = new tabblesEntities();
            var isauth = Logic.auth(db, Session, out int?idUtente, out bool?isAdmin, out int?idOrg);

            //isAdmin = false;
            if (!isauth /*|| isAdmin != true*/)             // se non è admin può vedere il control panel ma non salvare.
            {
                //giveMessageYouNeedToBeAdmin();

                return(Redirect(Url.Action("Index", "Home")));
            }

            var mod = faiQuery(db, idOrg);


            return(View("ControlPanel", mod));
        }
コード例 #10
0
        public ActionResult Save()
        {
            using (var tr = new TransactionScope())
            {
                var db     = new tabblesEntities();
                var isauth = TabblesWebLogic.Logic.auth(db, Session, out int?idUtente, out bool?isAdmin, out int?idOrg);

                //isAdmin = false;
                if (!isauth || isAdmin != true)                 // oppure non è admin
                {
                    giveMessageYouNeedToBeAdmin();
                    return(Redirect(Url.Action("Index", "Login")));
                }


                // ottengo machinename to impers
                var machna = Request.Form["machineNameToImpersonate"];
                var org    = db.organization.Where(o => o.id == idOrg.Value).FirstOrDefault();


                org.machineNameToImpersonate = machna;

                db.SaveChanges();

                tr.Complete();


                TempData["messaggio"]             = $"Changes saved.";
                TempData["isMessaggioDiSuccesso"] = true;

                return(Redirect(Url.Action("Index", "ControlPanel")));


                //var mod = faiQuery(db, idOrg);
                //return View("ControlPanel", mod);
            }
        }
コード例 #11
0
        public ActionResult CreateOrEdit()
        {
            try
            {
                var db = new tabblesEntities();


                bool utenteEsiste = Logic.auth(db, Session /*, out bool isAdmin, out string username*/, out int?idOrg, out bool?isAdmin, out int?idUtente);

                if (!utenteEsiste /* TODO oppure esiste ma non ha i permessi su questa struttura */)
                {
                    return(Redirect(Url.Action("Index", "Login")));
                }



                // fai validazione
                var mod = creaModelloDaRequestForm(Request, Session, db);


                string validazioneFallita = null;

                if (mod.letter.IsNullOrWhite())
                {
                    validazioneFallita = $"Letter not specified.";
                }
                else if (mod.letter.Trim().Length > 1)
                {
                    validazioneFallita = $"Please type only one letter as the drive letter, not L:\\ or L:.";
                }


                if (validazioneFallita != null)
                {
                    TempData["messaggio"]             = validazioneFallita;
                    TempData["isMessaggioDiSuccesso"] = false;


                    return(View("DriveLetterInfo", mod));
                }
                else
                {
                    if (mod.id == null)                     // crea
                    {
                        var newdli = new driveLetterInfoForTabblesWeb
                        {
                            letter           = mod.letter.Trim().ToUpper()
                            , allowDowload   = mod.allowDownload
                            , convertAndroid = mod.convertAndroid
                            , convertIos     = mod.convertIos
                            , convertLinux   = mod.convertLinux
                            , convertMac     = mod.convertMac
                            , convertWindows = "",
                            idOrg            = idOrg.Value
                            ,
                        };

                        db.driveLetterInfoForTabblesWeb.Add(newdli);



                        db.SaveChanges();

                        // scrivi nel db e torna indietro

                        TempData["messaggio"]             = "Drive letter info created.";
                        TempData["isMessaggioDiSuccesso"] = true;

                        return(Redirect(Url.Action("Index", "ControlPanel")));
                    }
                    else                     // edit
                    {
                        var dli = db.driveLetterInfoForTabblesWeb.Where(se => se.id == mod.id.Value).SingleOrDefault();

                        dli.allowDowload   = mod.allowDownload;
                        dli.convertAndroid = mod.convertAndroid;
                        dli.convertIos     = mod.convertIos;
                        dli.convertLinux   = mod.convertLinux;
                        dli.convertMac     = mod.convertMac;


                        db.SaveChanges();

                        TempData["messaggio"]             = "Drive letter info edited.";
                        TempData["isMessaggioDiSuccesso"] = true;

                        return(Redirect(Url.Action("Index", "ControlPanel")));
                    }
                }
            }
            catch (Exception e)
            {
                throw;
            }
        }
コード例 #12
0
        private static DriveLetterInfoModel creaModelloDaRequestForm(HttpRequestBase Request, HttpSessionStateBase Session, tabblesEntities db)
        {
            //var dataInizio = Utils.parseDateJsIta(Request.Form["dataInizio"]);
            //var dataFine = Utils.parseDateJsIta(Request.Form["dataFine"]);


            //string reqFormOra = Request.Form["ora"];
            //var ora = Utils.parseTimeIta(reqFormOra);


            // todo riempire da querystring. serve nel postback


            var driveLetter    = Request.Form["driveLetter"];
            var convertIos     = Request.Form["convertIos"];
            var convertAndroid = Request.Form["convertAndroid"];
            var convertLinux   = Request.Form["convertLinux"];
            var convertMac     = Request.Form["convertMac"];
            var allowDownload  = Request.Form["allowDownload"] == "on";



            var formid = Request.Form["id"];
            var id     = formid.IsNullOrWhite() ? new int?() : int.Parse(Request.Form["id"]);



            return(new DriveLetterInfoModel
            {
                id = id,

                allowDownload = allowDownload
                , convertAndroid = convertAndroid
                , convertIos = convertIos
                , convertLinux = convertLinux
                , convertMac = convertMac
                , letter = driveLetter
            });
        }
コード例 #13
0
ファイル: AjaxController.cs プロジェクト: tabbles/TabblesWeb
        public IHttpActionResult getFixedUserData(string uname, string pwd)
        {
            try
            {
                var db = new tabblesEntities();



                SqlParameter noAuth = null;

                var add = new Action <SqlCommand>(c =>
                {
                    c.Parameters.AddWithValue("@uname", uname);
                    c.Parameters.AddWithValue("@pwd", pwd);


                    noAuth = addOutputParameterInt("@noAuth", c);
                });



                var res = StoredProc.ExecuteStoredProc("getFixedUserData", add);


                // devo anche estrarre il machinename to impersonate dall'org e passarlo al client!

                var idorg = int.Parse(res.tables[0].Rows[0]["organization"].ToString());

                var org = db.organization.Where(o => o.id == idorg).FirstOrDefault();

                if (org.machineNameToImpersonate == null)
                {
                    return(Ok(new Result {
                        error = "machine-name-to-impersonate-not-set-for-organization"
                    }));
                }
                else if (res.err == "timeout")
                {
                    return(Ok(new Result {
                        error = "timeout"
                    }));
                }
                else
                {
                    var browser = Utils.GetUserPlatform(HttpContext.Current.Request);

                    var tabblesWebRows = (from ro in db.driveLetterInfoForTabblesWeb
                                          where ro.idOrg == org.id
                                          select new TabblesWebRowForClient
                    {
                        allowDowload = ro.allowDowload,
                        convertAndroid = ro.convertAndroid,
                        convertIos = ro.convertIos,
                        convertLinux = ro.convertLinux,
                        convertMac = ro.convertMac,
                        convertWindows = ro.convertWindows,
                        letter = ro.letter
                    }).ToArray();



                    var r = new resultTables(dataTables: res.tables,
                                             noAuth: (int)noAuth.Value,
                                             machineName: org.machineNameToImpersonate
                                             , obj: null);

                    return(Ok(new Result {
                        ret = r,

                        tabblesWebRows = tabblesWebRows,
                        browser = browser
                    }));
                }
            }
            catch (Exception e)
            {
                return(Ok(new Result {
                    error = "generic-error", stringOfExc = Utils.stringOfException(e)
                }));
            }
        }