Esempio n. 1
0
        public async Task <object> loginHash([FromBody] LoginHashData data)
        {
            try
            {
                var userName = SHAHelper.TwoWayDecrypt(data.UserName, "APFamilyAPThaiAP");
                var password = SHAHelper.TwoWayDecrypt(data.Password, "APFamilyAPThaiAP");


                var appCode = "Defect";

                string APApiKey = Environment.GetEnvironmentVariable("API_Key");
                if (APApiKey == null)
                {
                    APApiKey = UtilsProvider.AppSetting.ApiKey;
                }
                string APApiToken = Environment.GetEnvironmentVariable("Api_Token");
                if (APApiToken == null)
                {
                    APApiToken = UtilsProvider.AppSetting.ApiToken;
                }


                var client  = new HttpClient();
                var Content = new StringContent(JsonConvert.SerializeObject(data));
                Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                Content.Headers.Add("api_key", APApiKey);
                Content.Headers.Add("api_token", APApiToken);
                string PostURL = Environment.GetEnvironmentVariable("AuthenticationURL");
                PostURL = PostURL + "JWTUserLogin";
                if (PostURL == null)
                {
                    PostURL = UtilsProvider.AppSetting.AuthorizeURL + "JWTUserLogin";
                }
                var Respond = await client.PostAsync(PostURL, Content);

                if (Respond.StatusCode != System.Net.HttpStatusCode.OK)
                {
                    return(new
                    {
                        success = false,
                        data = new AutorizeDataJWT(),
                        valid = false
                    });
                }
                var RespondData = await Respond.Content.ReadAsStringAsync();

                AutorizeDataJWT             Result = JsonConvert.DeserializeObject <AutorizeDataJWT>(RespondData);
                AutorizeDataJWTReturnObject Return = new AutorizeDataJWTReturnObject();
                Return.AccountExpirationDate  = Result.AccountExpirationDate;
                Return.AppUserRole            = Result.AppUserRole;
                Return.AuthenticationProvider = Result.AuthenticationProvider;
                Return.CostCenterCode         = Result.CostCenterCode;
                Return.CostCenterName         = Result.CostCenterName;
                Return.DisplayName            = Result.DisplayName;
                Return.Division           = Result.Division;
                Return.DomainUserName     = Result.DomainUserName;
                Return.Email              = Result.Email;
                Return.EmployeeID         = Result.EmployeeID;
                Return.FirstName          = Result.FirstName;
                Return.LastLogon          = Result.LastLogon;
                Return.LastName           = Result.LastName;
                Return.LoginResult        = Result.LoginResult;
                Return.LoginResultMessage = Result.LoginResultMessage;
                Return.SysAppCode         = Result.SysAppCode;
                Return.SysUserData        = JsonConvert.DeserializeObject <UserModel>(Result.SysUserData);
                Return.SysUserId          = Result.SysUserId;
                Return.SysUserRoles       = JsonConvert.DeserializeObject <CustomModel.vwUserRole>(Result.SysUserRoles);
                Return.Token              = Result.Token;
                Return.UserApp            = JsonConvert.DeserializeObject <List <vwUserApp> >(Result.UserApp);
                Return.UserPrincipalName  = Result.UserPrincipalName;
                List <UserProject> userProjects = JsonConvert.DeserializeObject <List <UserProject> >(Result.UserProject);

                List <UserProjectType> userProjectTypes = new List <UserProjectType>();
                for (int i = 0; i < userProjects.Count(); i++)
                {
                    ICONEntFormsProduct Prd    = _masterRepo.GetProductDataFromCRM_Sync(userProjects[i].ProjectCode);
                    string          obj        = JsonConvert.SerializeObject(userProjects[i]);
                    UserProjectType ProductObj = JsonConvert.DeserializeObject <UserProjectType>(obj);
                    if (Prd != null)
                    {
                        if (Prd.Producttype == "โครงการแนวราบ")
                        {
                            ProductObj.producttypecate = "H";
                        }
                        if (Prd.Producttype == "โครงการแนวสูง")
                        {
                            ProductObj.producttypecate = "V";
                        }
                    }

                    userProjectTypes.Add(ProductObj);
                }

                Return.UserProject = userProjectTypes;
                if (Result.LoginResult == false)
                {
                    return(new
                    {
                        success = false,
                        data = Result.LoginResultMessage,
                        valid = false
                    });
                }
                AccessKeyControl AC = _UserRepository.GetUserAccessKey(Result.EmployeeID);
                if (AC == null)
                {
                    AccessKeyControl accessKeyControl = new AccessKeyControl();
                    accessKeyControl.EmpCode   = Result.EmployeeID;
                    accessKeyControl.AccessKey = generateAccessKey(Result.EmployeeID);
                    accessKeyControl.LoginDate = DateTime.Now;

                    bool Insert = _UserRepository.InsertUserAccessKey(accessKeyControl);

                    return(new
                    {
                        success = true,
                        data = Return,
                        AccessKey = accessKeyControl.AccessKey,
                        valid = false
                    });
                }
                else
                {
                    AC.AccessKey = generateAccessKey(Result.EmployeeID);
                    AC.LoginDate = DateTime.Now;

                    bool Update = _UserRepository.UpdateUserAccessKey(AC);

                    return(new
                    {
                        success = true,
                        data = Return,
                        AccessKey = AC.AccessKey,
                        valid = false
                    });
                }
            }
            catch (Exception ex)
            {
                return(StatusCode(500, "Internal server error :: " + ex.Message));
            }
        }
Esempio n. 2
0
        public async Task <object> PostLogin([FromBody] LoginData data)
        {
            try
            {
                var userName = data.UserName;
                var password = data.Password;
                var appCode  = data.AppCode;

                string APApiKey = Environment.GetEnvironmentVariable("API_Key");
                if (APApiKey == null)
                {
                    APApiKey = UtilsProvider.AppSetting.ApiKey;
                }

                if (data.UserLoginImage != null) // ถ่ายรูป
                {
                    var client  = new HttpClient();
                    var Content = new StringContent(JsonConvert.SerializeObject(data));
                    Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    Content.Headers.Add("api_key", APApiKey);
                    string PostURL = Environment.GetEnvironmentVariable("AuthenticationURL");
                    if (PostURL == null)
                    {
                        PostURL = UtilsProvider.AppSetting.AuthorizeURL;
                    }
                    var Respond = await client.PostAsync(PostURL, Content);

                    if (Respond.StatusCode != System.Net.HttpStatusCode.OK)
                    {
                        return(new
                        {
                            success = false,
                            data = new AutorizeDataJWT(),
                            Message = "Authentication Fail"
                        });
                    }
                    var RespondData = await Respond.Content.ReadAsStringAsync();

                    AutorizeDataJWT Result = JsonConvert.DeserializeObject <AutorizeDataJWT>(RespondData);
                    if (Result.LoginResult == false)
                    {
                        return(new
                        {
                            success = false,
                            data = new AutorizeDataJWT(),
                            Message = Result.LoginResultMessage
                        });
                    }

                    AutorizeDataJWTReturnObject Return = new AutorizeDataJWTReturnObject();
                    Return.AccountExpirationDate  = Result.AccountExpirationDate;
                    Return.AppUserRole            = Result.AppUserRole;
                    Return.AuthenticationProvider = Result.AuthenticationProvider;
                    Return.CostCenterCode         = Result.CostCenterCode;
                    Return.CostCenterName         = Result.CostCenterName;
                    Return.DisplayName            = Result.DisplayName;
                    Return.Division           = Result.Division;
                    Return.DomainUserName     = Result.DomainUserName;
                    Return.Email              = Result.Email;
                    Return.EmployeeID         = Result.EmployeeID;
                    Return.FirstName          = Result.FirstName;
                    Return.LastLogon          = Result.LastLogon;
                    Return.LastName           = Result.LastName;
                    Return.LoginResult        = Result.LoginResult;
                    Return.LoginResultMessage = Result.LoginResultMessage;
                    Return.SysAppCode         = Result.SysAppCode;
                    Return.SysUserData        = JsonConvert.DeserializeObject <UserModel>(Result.SysUserData);
                    Return.SysUserId          = Result.SysUserId;
                    Return.SysUserRoles       = JsonConvert.DeserializeObject <vwUserRole>(Result.SysUserRoles);
                    Return.Token              = Result.Token;
                    Return.UserApp            = JsonConvert.DeserializeObject <List <vwUserApp> >(Result.UserApp);
                    Return.UserPrincipalName  = Result.UserPrincipalName;

                    Model.APFamily.RegisLoginHistory empProfile = _UserRepository.GetEmpProfile(Result.EmployeeID);
                    if (empProfile == null)
                    {
                        Model.APFamily.RegisLoginHistory emp = new Model.APFamily.RegisLoginHistory();
                        emp.EmpCode       = Result.EmployeeID;
                        emp.EmpDeviceID   = data.DeviceID;
                        emp.EmpName       = Result.FirstName;
                        emp.EmpLastName   = Result.LastName;
                        emp.PositionName  = Result.Division;
                        emp.Email         = Result.Email;
                        emp.EmpLoginToken = generateToken(data.DeviceID);

                        bool InsertEmpData = _UserRepository.InsertEmpProfile(emp);

                        return(new
                        {
                            success = true,
                            data = emp,
                            Token = emp.EmpLoginToken,
                            Message = "LogIn Success!"
                        });
                    }
                    else
                    {
                        if (data.DeviceID == empProfile.EmpDeviceID)
                        {
                            DateTime ExtainToken = Convert.ToDateTime(empProfile).AddDays(15);
                            empProfile.EmpTokenExpire = ExtainToken;

                            bool updateProfile = _UserRepository.UpdateEmpProfile(empProfile);
                            return(new
                            {
                                success = true,
                                data = empProfile,
                                Token = empProfile.EmpLoginToken,
                                Message = "LogIn Success!"
                            });
                        }
                        else
                        {
                            return(new
                            {
                                success = false,
                                data = empProfile = new Model.APFamily.RegisLoginHistory(),
                                Token = "",
                                Message = "You Have Change you Device! Please Contact IT Admin for further Use!"
                            });
                        }
                    }
                }
                else
                {
                    var client  = new HttpClient();
                    var Content = new StringContent(JsonConvert.SerializeObject(data));
                    Content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                    Content.Headers.Add("api_key", APApiKey);
                    string PostURL = Environment.GetEnvironmentVariable("AuthenticationURL");
                    if (PostURL == null)
                    {
                        PostURL = UtilsProvider.AppSetting.AuthorizeURL;
                    }
                    var Respond = await client.PostAsync(PostURL, Content);

                    if (Respond.StatusCode != System.Net.HttpStatusCode.OK)
                    {
                        return(new
                        {
                            success = false,
                            data = new AutorizeDataJWT(),
                            Message = "Authentication Fail"
                        });
                    }
                    var RespondData = await Respond.Content.ReadAsStringAsync();

                    AutorizeDataJWT Result = JsonConvert.DeserializeObject <AutorizeDataJWT>(RespondData);
                    if (Result.LoginResult == false)
                    {
                        return(new
                        {
                            success = false,
                            data = new AutorizeDataJWT(),
                            Message = Result.LoginResultMessage
                        });
                    }

                    AutorizeDataJWTReturnObject Return = new AutorizeDataJWTReturnObject();
                    Return.AccountExpirationDate  = Result.AccountExpirationDate;
                    Return.AppUserRole            = Result.AppUserRole;
                    Return.AuthenticationProvider = Result.AuthenticationProvider;
                    Return.CostCenterCode         = Result.CostCenterCode;
                    Return.CostCenterName         = Result.CostCenterName;
                    Return.DisplayName            = Result.DisplayName;
                    Return.Division           = Result.Division;
                    Return.DomainUserName     = Result.DomainUserName;
                    Return.Email              = Result.Email;
                    Return.EmployeeID         = Result.EmployeeID;
                    Return.FirstName          = Result.FirstName;
                    Return.LastLogon          = Result.LastLogon;
                    Return.LastName           = Result.LastName;
                    Return.LoginResult        = Result.LoginResult;
                    Return.LoginResultMessage = Result.LoginResultMessage;
                    Return.SysAppCode         = Result.SysAppCode;
                    Return.SysUserData        = JsonConvert.DeserializeObject <UserModel>(Result.SysUserData);
                    Return.SysUserId          = Result.SysUserId;
                    Return.SysUserRoles       = JsonConvert.DeserializeObject <vwUserRole>(Result.SysUserRoles);
                    Return.Token              = Result.Token;
                    Return.UserApp            = JsonConvert.DeserializeObject <List <vwUserApp> >(Result.UserApp);
                    Return.UserPrincipalName  = Result.UserPrincipalName;

                    Model.APFamily.RegisLoginHistory empProfile = _UserRepository.GetEmpProfile(Result.EmployeeID);
                    if (empProfile == null)
                    {
                        Model.APFamily.RegisLoginHistory emp = new Model.APFamily.RegisLoginHistory();
                        emp.EmpCode       = Result.EmployeeID;
                        emp.EmpDeviceID   = data.DeviceID;
                        emp.EmpName       = Result.FirstName;
                        emp.EmpLastName   = Result.LastName;
                        emp.PositionName  = Result.Division;
                        emp.Email         = Result.Email;
                        emp.EmpLoginToken = generateToken(data.DeviceID);

                        bool InsertEmpData = _UserRepository.InsertEmpProfile(emp);

                        return(new
                        {
                            success = true,
                            data = emp,
                            Token = emp.EmpLoginToken,
                            Message = "LogIn Success!"
                        });
                    }
                    else
                    {
                        if (data.DeviceID == empProfile.EmpDeviceID)
                        {
                            DateTime ExtainToken = Convert.ToDateTime(empProfile).AddDays(15);
                            empProfile.EmpTokenExpire = ExtainToken;

                            bool updateProfile = _UserRepository.UpdateEmpProfile(empProfile);
                            return(new
                            {
                                success = true,
                                data = empProfile,
                                Token = empProfile.EmpLoginToken,
                                Message = "LogIn Success!"
                            });
                        }
                        else
                        {
                            return(new
                            {
                                success = false,
                                data = empProfile = new Model.APFamily.RegisLoginHistory(),
                                Token = "",
                                Message = "You Have Change you Device! Please Contact IT Admin for further Use!"
                            });
                        }
                    }
                } //ไม่ถ่ายรูป
                return(new
                {
                    success = false,
                    data = new AutorizeDataJWT(),
                    Message = "Authentication Fail"
                });
            }
            catch (Exception ex)
            {
                return(StatusCode(500, "Internal server error :: " + ex.Message));
            }
        }