示例#1
0
        // 註冊新分銷商
        public void Register(RegisterModel reg)
        {
            try
            {
                if (reg.PASSWORD != null)
                {
                    reg.PASSWORD  = Sha256Helper.Gethash(reg.PASSWORD);
                    reg.USER_UUID = Guid.NewGuid().ToString();

                    string[] time = reg.TIMEZONE.Split(new char[2] {
                        ',', ':'
                    });
                    reg.TIMEZONE = time[1];

                    string[] country = reg.COUNTRY_CODE.Split(new char[1] {
                        ','
                    });
                    reg.COUNTRY_CODE = country[0];
                    reg.TEL_CODE     = country[1];

                    RegisterDAL.InsCompany(reg);
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
示例#2
0
        // 使用者認證 Authentication
        public static UserAccount GetAccount(string email, string password)
        {
            // 檢查登入者身分
            string      jsonResult = AccountProxy.GetUserAccount(email, Sha256Helper.Gethash(password));
            UserAccount account    = null;
            var         jobjAcct   = JObject.Parse(jsonResult);

            try
            {
                // 若無效身分則送出登入異常
                switch (jobjAcct["ACCOUNT_TYPE"].ToString())
                {
                case "KKdayAccount":
                    account = jobjAcct["ACCOUNT"].ToObject <KKdayAccount>();
                    break;

                case "B2dAccount":
                    account = jobjAcct["ACCOUNT"].ToObject <B2dAccount>();
                    break;

                default: throw new Exception("Invalid User Login");
                }
            }
            catch
            {
                throw new Exception("Invalid User Login");
            };

            return(account);
        }
示例#3
0
 // [共用]新增帳號資訊
 public void InsertAccount(B2dAccount acct, string crt_user)
 {
     if (acct.PASSWORD != null)
     {
         acct.PASSWORD = Sha256Helper.Gethash(acct.PASSWORD);
         acct.UUID     = Guid.NewGuid().ToString();
         AccountDAL.InsertAccount(acct, crt_user);
     }
 }
示例#4
0
        // [共用]新增API帳號資訊
        public void InsertAccount(B2dAccount acct, string crt_user)
        {
            B2dAccount acc = acct as B2dAccount;

            if (acc.PASSWORD != null)
            {
                acc.PASSWORD = Sha256Helper.Gethash(acc.PASSWORD);
                acc.UUID     = Guid.NewGuid().ToString();
                ApiAccountDAL.InsertApiAccount_Api(acc, crt_user);
            }
        }
示例#5
0
        // 使用者認證 Authentication
        public UserAccount GetAccount(string email, string password)
        {
            // 檢查登入者身分
            UserAccount account = AccountAuthDAL.UserAuth(email, Sha256Helper.Gethash(password));

            // 若無效身分則送出登入異常
            if (!(account is KKdayAccount) && !(account is B2dAccount))
            {
                throw new Exception("Invalid User Login");
            }

            return(account);
        }
示例#6
0
        public async Task <IActionResult> AuthenAsync(LoginModel loginModel)
        {
            Dictionary <string, string> jsonData = new Dictionary <string, string>();

            try
            {
                //var accountRepo = (AccountRepository)HttpContext.RequestServices.GetService(typeof(AccountRepository));
                var encPassword = WebUtility.UrlEncode(Sha256Helper.Gethash(loginModel.Password));
                var account     = AccountRepository.GetAccount(loginModel.Email, encPassword);
                //分流-KKdayUser&UserAdmin
                var IsKKdayUser = account is KKdayAccount ? true : false;
                var IsUserAdmin = (account is B2dAccount && ((B2dAccount)account).USER_TYPE.Equals("01")) ? true : false;

                var strChiperAcct = AesCryptHelper.aesEncryptBase64(JsonConvert.SerializeObject(account), Website.Instance.AesCryptKey);

                var claims = new List <Claim>
                {
                    new Claim(ClaimTypes.Name, account.NAME),
                    new Claim("Account", account.EMAIL),
                    new Claim("UUID", account.UUID),
                    new Claim("UserType", IsKKdayUser ? "KKDAY" : (IsUserAdmin ? "ADMIN":"USER")),
                    new Claim("Locale", account.LOCALE),
                    new Claim("Currency", IsKKdayUser ? "" : ((B2dAccount)account).CURRENCY),
                    new Claim(ClaimTypes.UserData, strChiperAcct), // 以AES加密JSON格式把使用者資料保存於Cookie
                };

                //var aesUserData = User.Identities.SelectMany(i => i.Claims.Where(c => c.Type == ClaimTypes.UserData).Select(c => c.Value)).FirstOrDefault();
                //var UserData = JsonConvert.DeserializeObject<B2dAccount>(AesCryptHelper.aesDecryptBase64(aesUserData, Website.Instance.AesCryptKey));

                var userIdentity = new ClaimsIdentity(claims, "login");

                ClaimsPrincipal principal = new ClaimsPrincipal(userIdentity);

                await HttpContext.SignInAsync(
                    CookieAuthenticationDefaults.AuthenticationScheme,
                    principal,
                    new AuthenticationProperties()
                {
                    ExpiresUtc   = DateTime.UtcNow.AddDays(10),   // 預設 Cookie 有效時間
                    IsPersistent = false,
                    AllowRefresh = false
                });

                if (!IsKKdayUser)
                {
                    HttpContext.Session.SetString("B2D_COMPANY_LOCALE", ((B2dAccount)account).LOCALE);
                    HttpContext.Session.SetString("B2D_COMPANY_CURRENCY", ((B2dAccount)account).CURRENCY);
                }

                jsonData.Add("status", "OK");
                //Just redirect to our index after logging in.
                jsonData.Add("url", IsKKdayUser ? Url.Content("~/KKday/") : Url.Content("~/"));
            }
            catch (Exception ex)
            {
                jsonData.Clear();
                jsonData.Add("status", "ERROR");
                jsonData.Add("msg", ex.Message);
            }

            return(Json(jsonData));
        }