// 註冊新分銷商 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; } }
// 使用者認證 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); }
// [共用]新增帳號資訊 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); } }
// [共用]新增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); } }
// 使用者認證 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); }
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)); }