Example #1
0
        public async Task <EF_Login> Login(EF_User user)
        {
            var userIdentity = await this.UserIdentity.UserIdentityVerification(user.Id, user.Enable);

            EF_Login result = new EF_Login()
            {
                UserName = user.UserName
            };

            if (userIdentity.Enable == true)
            {
                result.Id       = userIdentity.Id;
                result.UserId   = userIdentity.UserId;
                result.UserName = userIdentity.UserName;
                result.Password = userIdentity.Password;
                var TokenStr = this.jwt.JwtGenerateToken(user);
                result.TokenData = TokenStr;
                result.Enable    = true;
                result.Message   = "登入成功";
            }
            else
            {
                result.Enable  = false;
                result.Message = "帳號或密碼輸入錯誤";
            }
            return(result);
        }
Example #2
0
        private List <Claim> SetClaims(EF_User user)
        {
            List <Claim> result = new List <Claim>
            {
                new Claim(JwtRegisteredClaimNames.Sub, user.UserName),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
                new Claim("UserName", user.UserName),
                new Claim("Id", user.Id.ToString())
            };

            return(result);
        }
Example #3
0
 protected User Transfor(EF_User DataEntry)
 {
     return(new User()
     {
         Id = DataEntry.Id,
         UserName = DataEntry.UserName,
         UserId = DataEntry.UserId,
         Password = DataEntry.Password,
         Enable = DataEntry.Enable,
         CreateDate = DataEntry.CreateDate,
         ModifyDate = DataEntry.ModifyDate
     });
 }
Example #4
0
        public async Task <RS_Object> UpdateUser(EF_User DataEntry)
        {
            RS_Object result = new RS_Object();

            try
            {
                var Rs_Modify = await this.Daouser.UpdateUser(DataEntry);

                Rs_Modify.Message = Rs_Modify.Success ? $"成功更新使用者資料{Rs_Modify.Count}筆" : Rs_Modify.Message;
                result            = Rs_Modify.Transfor("使用者");
                return(result);
            }
            catch (Exception ex)
            {
                Nlogger.WriteLog(Nlogger.NType.Error, $"{ex.Message}{ex.InnerException}", ex);
            }
            return(result);
        }
Example #5
0
        public async Task <RS_ModifyResult> CreateUser(EF_User DataEntry)
        {
            RS_ModifyResult result = new RS_ModifyResult("Add");

            try
            {
                this.dbcontext.User.Add(this.Transfor(DataEntry));
                var SaveResult = await this.dbcontext.SaveChangesAsync();

                result.Count   = SaveResult;
                result.Success = true;
            }
            catch (Exception ex)
            {
                result.Message = ex.ToString();
                result.Success = false;
                Nlogger.WriteLog(Nlogger.NType.Error, ex.Message, ex);
            }
            return(result);
        }
Example #6
0
        public string JwtGenerateToken(EF_User user)
        {
            List <Claim> claims             = SetClaims(user);
            var          userClaimsIdentity = new ClaimsIdentity(claims);
            var          securityKey        = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(signkey));
            // 建立一組對稱式加密的金鑰,主要用於 JWT 簽章之用
            var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature);
            // HmacSha256 有要求必須要大於 128 bits,所以 key 不能太短,至少要 16 字元以上
            // 建立 SecurityTokenDescriptor
            var tokenDescriptor = new SecurityTokenDescriptor
            {
                Issuer             = issue,
                Subject            = userClaimsIdentity,
                Expires            = DateTime.Now.AddMinutes(expireMinutes),
                SigningCredentials = signingCredentials
            };
            // 產出所需要的 JWT securityToken 物件,並取得序列化後的 Token 結果(字串格式)
            var tokenHandler   = new JwtSecurityTokenHandler();
            var securityToken  = tokenHandler.CreateToken(tokenDescriptor);
            var serializeToken = tokenHandler.WriteToken(securityToken);

            return(serializeToken);
        }
Example #7
0
        public async Task <RS_ModifyResult> UpdateUser(EF_User DataEntry)
        {
            RS_ModifyResult result = new RS_ModifyResult("Update");

            try
            {
                var clone   = this.Transfor(DataEntry);
                var ef_find = await this.dbcontext.User.FirstAsync(b => b.Id == DataEntry.Id);

                this.dbcontext.Entry(ef_find).CurrentValues.SetValues(clone);
                this.dbcontext.User.Update(ef_find);
                var SaveResult = await this.dbcontext.SaveChangesAsync();

                result.Count   = SaveResult;
                result.Success = true;
            }
            catch (Exception ex)
            {
                result.Message = ex.ToString();
                result.Success = false;
                Nlogger.WriteLog(Nlogger.NType.Error, ex.Message, ex);
            }
            return(result);
        }
Example #8
0
 public async Task <RS_Object> UpdateUser(EF_User DataEntry)
 {
     return(await this.user.UpdateUser(DataEntry));
 }
Example #9
0
        public async Task <IActionResult> CreateUser(EF_User DataEntry)
        {
            var r = await this.user.CreateUser(DataEntry);

            return(new JsonResult(r));
        }