private async Task <bool> getAPIToken()
        {
            HttpClient          client   = new HttpClient();
            HttpResponseMessage response = null;
            string tokenRole             = Global._sfAPIServiceTokenRole;

            if (HttpContext.Current.Session["loginBySA"] != null && bool.Parse(HttpContext.Current.Session["loginBySA"].ToString()))
            {
                tokenRole = "superadmin";
            }

            var content = new FormUrlEncodedContent(new Dictionary <string, string>()
            {
                { "grant_type", "password" },
                { "email", empSession.email },
                { "password", empSession.password },
                { "role", tokenRole }
            });

            string uri = Global._sfAPIServiceTokenEndPoint;

            response = await client.PostAsync(uri, content);

            if (response.IsSuccessStatusCode)
            {
                string result = await response.Content.ReadAsStringAsync();

                dynamic access_result = JObject.Parse(result);
                string  access_token  = access_result.access_token;
                if (!string.IsNullOrEmpty(access_token))
                {
                    Employee employee = new Employee();
                    this.empSession = employee.afterLoginInitial(access_token, access_result);

                    string permissionJson = await callAPIService("GET", Global._employeeEndPoint + "/" + access_result.Id + "/Permissions", null);

                    string externalDashboardJson = await callAPIService("GET", Global._externalDashboardEndPoint, null);

                    employee.initialPermission(permissionJson, externalDashboardJson);
                    //employee.initialLang((string)access_result.Lang);
                    return(true);
                }
                return(false);
            }
            else
            {
                if (response.StatusCode == HttpStatusCode.BadRequest || response.StatusCode == HttpStatusCode.Unauthorized)
                {
                    throw new Exception("Authentication Fail");
                }
                else
                {
                    throw new Exception();
                }
            }
        }
        public RestfulAPIHelper()
        {
            if (HttpContext.Current.Session["empSession"] == null)
            {
                throw new Exception("Invalid Session");
            }

            empSession = EmployeeSession.LoadByJsonString(HttpContext.Current.Session["empSession"].ToString());
            ServicePointManager.ServerCertificateValidationCallback += new RemoteCertificateValidationCallback((sender, certificate, chain, policyErrors) => { return(true); });
        }
Beispiel #3
0
        public EmployeeSession afterLoginInitial(string access_token, dynamic access_result)
        {
            EmployeeSession empSession = EmployeeSession.LoadByJsonString(HttpContext.Current.Session["empSession"].ToString());

            empSession.accessToken = access_token;
            if (access_result.CompanyId != null)
            {
                empSession.companyId = access_result.CompanyId;
            }
            empSession.photoURL  = access_result.PhotoURL;
            empSession.id        = access_result.Id;
            empSession.firstName = access_result.FirstName;
            empSession.lastName  = access_result.LastName;
            empSession.email     = access_result.Email;
            if (access_result.AdminFlag != null)
            {
                empSession.adminFlag = bool.Parse((string)access_result.AdminFlag);
            }
            else
            {
                empSession.adminFlag = false;
            }
            empSession.issued         = access_result.issued;
            empSession.expires        = access_result.expires;
            empSession.employeeNumber = access_result.EmployeeNumber;
            if (access_result.Lang != null)
            {
                empSession.Lang = access_result.Lang;
            }
            else
            {
                empSession.Lang = "en";
            }
            i18n.LanguageTag langTag = i18n.LanguageTag.GetCachedInstance(empSession.Lang);
            System.Web.HttpContext.Current.SetPrincipalAppLanguageForRequest(langTag);

            HttpContext.Current.Session["empSession"] = empSession.Serialize();

            StringBuilder logMessage = new StringBuilder();

            logMessage.AppendLine("audit: User Login Successful.");
            logMessage.AppendLine("email:" + empSession.email);
            Global._sfAuditLogger.Audit(logMessage);

            return(empSession);
        }
Beispiel #4
0
        public void initialPermission(string permissionJson, string externalDashboardJson)
        {
            try
            {
                EmployeeSession empSession = EmployeeSession.LoadByJsonString(HttpContext.Current.Session["empSession"].ToString());
                bool            isAdmin    = empSession.adminFlag;
                if (HttpContext.Current.Session["loginBySA"] != null && bool.Parse(HttpContext.Current.Session["loginBySA"].ToString()))
                {
                    isAdmin = true;
                }
                dynamic    permissions;
                string     permissionString = "", navigationMenuString = "";
                List <int> permissionIds = new List <int>();

                if (!isAdmin)
                {
                    permissions = Json.Decode(permissionJson);
                    foreach (var permission in permissions)
                    {
                        permissionIds.Add((int)permission.PermissionId);
                        permissionString = permissionString + permission.PermissionId + ",";
                    }
                }
                else
                {
                    permissionString = "0,";
                }

                if (isAdmin || permissionIds.Find(item => item == 10) > 0)
                {
                    navigationMenuString = navigationMenuString + "<li id=\"menuFactory\"><a href=/Factory/Index><i class=\"zmdi zmdi-windows\"></i> <span> [[[Factory]]] </span> </a></li>";
                }

                if (isAdmin || permissionIds.Find(item => item == 20) > 0)
                {
                    navigationMenuString = navigationMenuString + "<li id=\"menuEquipment\"><a href=\"/Equipment/Index\"><i class=\"ti-harddrives\"></i> <span> [[[Equipment]]] </span> </a></li>";
                }

                if (isAdmin || permissionIds.Find(item => item == 30) > 0)
                {
                    navigationMenuString = navigationMenuString + "<li class=\"has-submenu\"  id=\"menuIoTDevice\"><span class=\"arrow-right\"></span><a href=\"#\"><i class=\"ti-signal\"></i><span> [[[IoT Device]]] </span> </a><ul class=\"submenu\"><li><a href=\"/IoTDevice/Index\">[[[IoT Devices]]]</a></li>";
                    if (isAdmin || permissionIds.Find(item => item == 34) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/IoTDevice/MessageAttach\">[[[Device Message]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 32) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/IoTDevice/ConfigurationManagement\">[[[Device Configuration]]]</a></li>";
                    }
                    navigationMenuString = navigationMenuString + "</ul></li>";
                }

                if (isAdmin || permissionIds.Find(item => item == 40) > 0)
                {
                    navigationMenuString = navigationMenuString + "<li class=\"has-submenu\"  id=\"menuMessage\"><span class=\"arrow-right\"></span><a href=\"#\"><i class=\"zmdi zmdi-calendar-note\"></i><span> [[[Message]]] </span> </a><ul class=\"submenu\"><li><a href=\"/Message/Index\">[[[Message Catalog]]]</a></li>";
                    if (isAdmin || permissionIds.Find(item => item == 42) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Message/MessageElement\">[[[Message Element]]]</a></li>";
                    }
                    navigationMenuString = navigationMenuString + "</ul></li>";
                }

                if (isAdmin || permissionIds.Find(item => item >= 50 && item < 60) > 0)
                {
                    navigationMenuString = navigationMenuString + "<li class=\"has-submenu\" id=\"menuMonitor\"><span class=\"arrow-right\"></span><a href=\"#\"><i class=\"ti-desktop\"></i><span> [[[Operation]]] </span> </a><ul class=\"submenu\">";
                    if (isAdmin || permissionIds.Find(item => item == 50) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Monitor/RunningTask\">[[[Backend Task]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 51) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Monitor/IoTHubReceiver\">[[[IoT Hub Message Receiver]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 52) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Monitor/UsageLog\">[[[Usage Log]]]</a></li>";
                    }
                    navigationMenuString = navigationMenuString + "</ul></li>";
                }

                if (isAdmin || permissionIds.Find(item => item >= 60 && item < 70) > 0)
                {
                    navigationMenuString = navigationMenuString + "<li class=\"has-submenu\" id=\"menuDashboard\"><span class=\"arrow-right\"></span><a href=\"#\"><i class=\"zmdi zmdi-view-dashboard\"></i><span> [[[Dashboard]]] </span> </a><ul class=\"submenu\">";
                    if (isAdmin || permissionIds.Find(item => item == 60) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Dashboard/Index\" target=\"_blank\">[[[Company Board]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 61) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Dashboard/FactoryList\">[[[Factory Board]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 62) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Dashboard/EquipmentList\">[[[Equipment Board]]]</a></li>";
                    }


                    /* Append External Dashboard */
                    dynamic externalDashboards = Json.Decode(externalDashboardJson);
                    foreach (var extDashboard in externalDashboards)
                    {
                        string fullURL = extDashboard.URL;
                        if (!fullURL.StartsWith("http"))
                        {
                            fullURL = "http://" + fullURL;
                        }
                        navigationMenuString = navigationMenuString + "<li><a href=\"" + fullURL + "\" target=\"_blank\">" + extDashboard.Name + "</a></li>";
                    }
                    /* End of Append External Dashboard */

                    navigationMenuString = navigationMenuString + "</ul></li>";
                }

                if (isAdmin || permissionIds.Find(item => item >= 100 && item < 200) > 0)
                {
                    navigationMenuString = navigationMenuString + "<li class=\"has-submenu\" id=\"menuSetup\"><span class=\"arrow-right\"></span><a href=\"#\"><i class=\"ti-settings m-r-5\"></i><span> [[[Setup]]] </span> </a><ul class=\"submenu\">";

                    /* Remove IoT Hub Alias from Admin Console  */
                    //if (isAdmin || permissionIds.Find(item => item == 103) > 0)
                    //    navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/IoTHubAlias\">[[[IoT Hub Alias]]]</a></li>";
                    if (isAdmin || permissionIds.Find(item => item == 110) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/EquipmentClass\">[[[Equipment Class]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 111) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/EquipmentMetadata\">[[[Equipment Meta Data]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 100) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/AlarmRuleCatalog\">[[[Alarm Rule Catalog]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 107) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/ExternalApplication\">[[[External Application]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 101) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/AlarmNotify\">[[[Alarm Action]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 102) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/DeviceCertificate\">[[[Device Certificate]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 109) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/DeviceConfiguration\">[[[Customize Device Configuration]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 108) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/WidgetCatalogCompany\">[[[Widget Catalog - Company]]]</a></li>";
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/WidgetCatalogFactory\">[[[Widget Catalog - Factory]]]</a></li>";
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/WidgetCatalogEquipment\">[[[Widget Catalog - Equipment]]]</a></li>";
                    }
                    //if (isAdmin || permissionIds.Find(item => item == 106) > 0)
                    //{
                    /* Company and Factory are retried after offer drag and drop dashboard */
                    //navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/DashboardCompany\">[[[Dashboard - Company]]]</a></li>";
                    //navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/DashboardFactory\">[[[Dashboard - Factory]]]</a></li>";
                    /* Using SQL Trigger to insert EquipmentDashboard */
                    //navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/DashboardEquipment\">[[[Dashboard - Equipment]]]</a></li>";
                    //}
                    if (isAdmin || permissionIds.Find(item => item == 104) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/Employee\">[[[Employee]]]</a></li>";
                    }
                    if (isAdmin || permissionIds.Find(item => item == 105) > 0)
                    {
                        navigationMenuString = navigationMenuString + "<li><a href=\"/Setup/Role\">[[[Role]]]</a></li>";
                    }
                    navigationMenuString = navigationMenuString + "</ul></li>";
                }

                if (permissionString.Length > 0)
                {
                    permissionString = permissionString.Substring(0, permissionString.Length - 1);
                }
                empSession.permissions    = permissionString;
                empSession.navigationMenu = navigationMenuString;
                HttpContext.Current.Session["empSession"] = empSession.Serialize();
            }
            catch (Exception ex)
            {
                StringBuilder logMessage = new StringBuilder();
                logMessage.AppendLine("Exception on initialPermission. Message:" + ex.Message);
                Global._sfAppLogger.Error(logMessage);
            }
        }
Beispiel #5
0
        //public void initialLang(string empLang)
        //{
        //    string lang = "en";
        //    try
        //    {
        //        if (!string.IsNullOrEmpty(empLang))
        //            lang = empLang;
        //        HttpContext.Current.Session["Lang"] = lang;

        //        i18n.LanguageTag langTag = i18n.LanguageTag.GetCachedInstance(lang);
        //        System.Web.HttpContext.Current.SetPrincipalAppLanguageForRequest(langTag);
        //    }
        //    catch (Exception ex)
        //    {
        //        StringBuilder logMessage = new StringBuilder();
        //        logMessage.AppendLine("Exception on initialPermission. Message:" + ex.Message);
        //        Global._sfAppLogger.Error(logMessage);
        //    }
        //}

        public string getRedirectionPath()
        {
            EmployeeSession empSession = EmployeeSession.LoadByJsonString(HttpContext.Current.Session["empSession"].ToString());
            bool            isAdmin    = empSession.adminFlag;

            if (HttpContext.Current.Session["loginBySA"] != null && bool.Parse(HttpContext.Current.Session["loginBySA"].ToString()))
            {
                isAdmin = true;
            }
            if (isAdmin)
            {
                return("Factory/Index");
            }

            List <string> permissionList = empSession.permissions.Split(',').ToList();

            if (permissionList == null)
            {
                LoginMsgSession loginMsgSession = new LoginMsgSession();
                loginMsgSession.toastLevel = "warning";
                loginMsgSession.message    = "You Don't Have Permission";
                HttpContext.Current.Session["loginMsgSession"] = loginMsgSession.Serialize();
                return("Home/Index");
            }

            string reController = "", reAction = "Index";

            permissionList.Sort();

            switch (int.Parse(permissionList[0]))
            {
            case 10:
                reController = "Factory";
                break;

            case 20:
                reController = "Equipment";
                break;

            case 30:
                reController = "IoTDevice";
                break;

            case 40:
                reController = "Message";
                break;

            case 50:
            case 51:
            case 52:
                reController = "Monitor";
                switch (int.Parse(permissionList[0]))
                {
                case 50:
                    reAction = "RunningTask";
                    break;

                case 51:
                    reAction = "IoTHubReceiver";
                    break;

                case 52:
                    reAction = "UsageLog";
                    break;
                }
                break;

            case 60:
            case 61:
            case 62:
            case 63:
            case 64:
            case 65:
                reController = "Dashboard";
                switch (int.Parse(permissionList[0]))
                {
                case 62:
                    reAction = "EquipmentList";
                    break;

                default:
                    reAction = "FactoryList";
                    break;
                }
                break;

            case 100:
            case 101:
            case 102:
            case 103:
            case 104:
            case 105:
            case 106:
            case 107:
            case 108:
            case 109:
            case 110:
                reController = "Setup";
                switch (int.Parse(permissionList[0]))
                {
                case 100:
                    reAction = "AlarmRuleCatalog";
                    break;

                case 101:
                    reAction = "AlarmNotify";
                    break;

                case 102:
                    reAction = "DeviceCertificate";
                    break;

                //case 103:
                //    reAction = "IoTHubAlias";
                //    break;
                case 104:
                    reAction = "Employee";
                    break;

                case 105:
                    reAction = "Role";
                    break;

                //case 106:
                //    reAction = "DashboardEquipment";
                //    break;
                case 107:
                    reAction = "ExternalApplication";
                    break;

                case 108:
                    reAction = "WidgetCatalogCompany";
                    break;

                case 109:
                    reAction = "DeviceConfiguration";
                    break;

                case 110:
                    reAction = "EquipmentClass";
                    break;
                }
                break;
            }
            return(reController + "/" + reAction);
        }