Beispiel #1
0
        public ApiResponse ValidateToken(Guid token)
        {
            Result result = Result.GenerateFailedResult();

            try
            {
                AppUserToken appUserToken = db.AppUserTokens.First(t => t.Token == token);
                if (appUserToken != null)
                {     //Token is Exist
                    if (appUserToken.ExpireDate < DateTime.Now)
                    { //Token is Expired
                        result = Result.GenerateFailedResult("Token is Expired");
                    }
                    else
                    {//Token is Valid
                        result = result = Result.GenerateOKResult("Token is active");
                    }
                }
                else
                {//Token is not Exist
                    result = Result.GenerateFailedResult("Token is not exist");
                }
            }
            catch (Exception ex)
            {
                result = Result.GenerateFailedResult("Token is not exist");
            }
            ApiResponse apiResponse = TypesMapper.ApiResponseAdapter.fromResult(result);

            return(apiResponse);
        }
Beispiel #2
0
        public void AumentaTempoVidaToken(string userToken, string appId)
        {
            AppUserToken appUserToken;

            AppUserTokens.TryGetValue(userToken + appId, out appUserToken);

            if (appUserToken == null)
            {
                var userTokenAppToken = unit.UserTokenAppTokenRepository.GetByUserTokenHash(userToken);
                if (userTokenAppToken != null)
                {
                    userTokenAppToken.DataExpiracao = DateTime.Now.AddMinutes(10);
                    unit.UserTokenAppTokenRepository.Edit(userTokenAppToken);
                    unit.SaveChanges();

                    // adiciona no cache
                    appUserToken = new AppUserToken
                    {
                        AppId     = appId,
                        UserToken = userToken,
                    };
                    AppUserTokens.Add(userToken + appId, appUserToken);
                }
            }

            if (appUserToken != null)
            {
                appUserToken.Expiration = DateTime.Now.AddMinutes(10);
            }
            else
            {
                throw new Exception(resourceManagerMsgs.GetString("UserTokenInvalid"));
            }
        }
Beispiel #3
0
        public async Task <AppUserToken> UpdateAsync(AppUserToken appUserToken)
        {
            db.AppUserTokens.Update(appUserToken);
            await db.SaveChangesAsync();

            return(appUserToken);
        }
Beispiel #4
0
        public APIAppUserToken GetTokenInfo(Guid token)
        {
            APIAppUserToken result = new APIAppUserToken();

            try
            {
                AppUserToken appUserToken = db.AppUserTokens.First(t => t.Token == token);
                if (appUserToken != null)
                {     //Token is Exist
                    if (appUserToken.ExpireDate < DateTime.Now)
                    { //Token is Expired
                        throw new Exception("Token is Expired");
                    }
                    else
                    {//Token is Valid
                        result = TypesMapper.APITokenAdapter.fromToken(appUserToken);
                    }
                }
                else
                {//Token is not Exist
                    throw new Exception("Token is not exist");
                }
            }
            catch (Exception ex)
            {
                throw new Exception("Token is not exist");
            }

            return(result);
        }
Beispiel #5
0
        public async Task <IActionResult> Login([FromBody] LoginModel login)
        {
            var user = await userManager.FindByNameAsync(login.Username);

            if (user != null && await userManager.CheckPasswordAsync(user, login.Password))
            {
                var token        = tokenService.GenerateToken(user.UserName);
                var appUserToken = new AppUserToken
                {
                    Id             = new JwtSecurityTokenHandler().WriteToken(token),
                    ExpirationDate = token.ValidTo,
                    CreationDate   = DateTime.UtcNow,
                    AppUserId      = user.Id
                };

                appUserTokensRepository.Create(appUserToken);


                return(Ok(new
                {
                    token = new JwtSecurityTokenHandler().WriteToken(token),
                    expiration = token.ValidTo
                }));
            }
            return(Unauthorized());
        }
 public void Remove(AppUserToken appUserToken)
 {
     using (var tran = _unitOfWork.BeginTransaction())
     {
         _tokenRepository.Remove(appUserToken);
         tran.Commit();
     }
 }
        public static APIAppUserToken fromToken(AppUserToken sourceToken)
        {
            APIAppUserToken result = new APIAppUserToken();

            result.AspNetUserID = (string)sourceToken.AspNetUserID;
            result.AppGUID      = sourceToken.App.GUID;
            result.CreateDate   = (DateTime)sourceToken.CreateDate;
            result.ExpireDate   = (DateTime)sourceToken.ExpireDate;
            result.Token        = (Guid)sourceToken.Token;

            return(result);
        }
Beispiel #8
0
 public void AddRefreshToken(AppUserToken refreshToken)
 {
     try
     {
         var user = _context.Users.Include(s => s.RefreshTokens).SingleOrDefault(s => s.Id == refreshToken.UserId);
         user.RefreshTokens.Add(refreshToken);
         _context.SaveChanges();
     }
     catch (Exception x)
     {
         throw new Exception(x.Message);
     }
 }
Beispiel #9
0
        public ApiResponse ValidateTokenEntityPermission(Guid token, long entityID, long methodID)
        {
            Result      res    = Result.GenerateFailedResult();
            ApiResponse result = new ApiResponse();

            try
            {
                AppUserToken appUserToken = db.AppUserTokens.First(t => t.Token == token);
                if (appUserToken == null)
                {//Token is not Exist
                    string message = "Token is not exist";
                    repoAPIUtilizations.AddUnAuthorized(token, methodID, message);
                    res = Result.GenerateFailedResult(message);
                }
                else
                {     //Token is Exist
                    if (appUserToken.ExpireDate < DateTime.Now)
                    { //Token is Expired
                        string message = "Token is Expired";
                        repoAPIUtilizations.AddUnAuthorized(token, methodID, message);
                        res = Result.GenerateFailedResult(message);
                    }
                    else
                    {//Token is Valid
                        List <AppAPIEntity> tokEntities = db.AppAPIEntitys.Where(a => a.AppID == (long)appUserToken.AppID && a.SystemEntityID == entityID).ToList();
                        if (tokEntities.Count == 0)
                        {//Token don't have access to Entity
                            string message = "Token is not allowed to access the requested entity";
                            repoAPIUtilizations.AddUnAuthorized(token, methodID, message);
                            res = Result.GenerateNotAuthorizedResult();
                        }
                        else
                        {//Token is allowed to access the Entity
                            string message = "Token is active and have access to " + tokEntities[0].SystemEntity.Title + " entity";
                            repoAPIUtilizations.AddSuccess((long)appUserToken.AppID, token, methodID, message);
                            res = Result.GenerateOKResult(message);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                string message = "Token is not exist";
                repoAPIUtilizations.AddUnAuthorized(token, methodID, message);
                res = Result.GenerateFailedResult(message);
            }
            ApiResponse apiResponse = TypesMapper.ApiResponseAdapter.fromResult(res);

            return(apiResponse);
        }
        private void Load()
        {
            try{
                var userTokenAppToken = unit.UserTokenAppTokenRepository.AllInclude(x => x.Aplicacao, y => y.Token).Where(x => x.DataExpiracao > DateTime.Now);
                foreach (var item in userTokenAppToken)
                {
                    var token = new AppUserToken
                    {
                        AppId      = item.Aplicacao.AppId,
                        UserToken  = item.Token.Hash,
                        Expiration = item.DataExpiracao
                    };

                    TokenManager.AppUserTokens.Add(token.UserToken + token.AppId, token);
                }
            } catch (Exception) {
            }
        }
Beispiel #11
0
        public APIAppUserToken GetNewToken(Guid appGuid, string userName, string password)
        {
            APIAppUserToken   apiToken = new APIAppUserToken();
            AppUserToken      token    = new AppUserToken();
            List <AspNetUser> usrs     = db.AspNetUsers.Where(u => u.UserName == userName).ToList();

            if (usrs.Count > 0)
            {//User is exist
                //Validateing Password
                if (VerifyHashedPassword(usrs[0].PasswordHash, password))
                {//Validate App ID & Key
                    App app = db.Apps.First(a => a.GUID == appGuid);
                    if (app == null)
                    {//App not Found
                        throw new Exception("App not Found");
                    }
                    else
                    {//Create New Token
                        token.AppID        = app.ID;
                        token.AspNetUserID = usrs[0].Id;
                        token.CreateDate   = DateTime.Now;
                        token.ExpireDate   = DateTime.Now.AddDays(180);
                        token.Token        = Guid.NewGuid();
                        db.AppUserTokens.Add(token);
                        db.SaveChanges();
                        apiToken = TypesMapper.APITokenAdapter.fromToken(token);
                    }
                }
                else
                {//Wrong Password
                    throw new Exception("Wrong password");
                }
            }
            else
            {//User Not Exist
                throw new Exception("User not found");
            }
            return(apiToken);
        }
Beispiel #12
0
        public async Task SaveRefreshToken(Guid userId, string newRefreshToken, string timeZone = "", string location = "")
        {
            var user = await _userManager.FindByIdAsync(userId.ToString());

            var timeZoneId = timeZone;

            timeZone = GetTimeZone(timeZoneId);
            if (user != null)
            {
                var now          = DateTime.UtcNow;
                var refreshToken = new AppUserToken
                {
                    RefreshToken = newRefreshToken,
                    CreatedOn    = now,
                    ExpiredOn    = now.AddMinutes(int.Parse(_config["JWTSetting:RefreshExpiration"])),
                    TimeZone     = timeZone,
                    TimeZoneId   = timeZoneId,
                    UserId       = user.Id
                };
                _userRepository.AddRefreshToken(refreshToken);
            }
        }
Beispiel #13
0
        public void AddAppUserToken(string appId, string userToken)
        {
            try
            {
                var _aplicacao = unit.AplicacaoRepository.GetByAppId(appId);

                var _userToken = GetToken(userToken);

                if (_userToken != null && _aplicacao != null)
                {
                    // persiste em caso de parado do serviço
                    UserTokenAppToken _userTokenAppToken = new UserTokenAppToken
                    {
                        IdAplicacao   = _aplicacao.Id,
                        IdUserToken   = _userToken.Id,
                        DataExpiracao = DateTime.Now.AddMinutes(10),
                        DataRegistro  = DateTime.Now
                    };

                    // armazena na lista de cache
                    AppUserToken _appUserToken = new AppUserToken
                    {
                        AppId      = appId.ToLower(),
                        UserToken  = userToken.ToLower(),
                        Expiration = DateTime.Now.AddMinutes(10)
                    };

                    unit.UserTokenAppTokenRepository.Insert(_userTokenAppToken);
                    unit.SaveChanges();
                    AppUserTokens.Add(_userToken.Hash + appId, _appUserToken);
                }
            }
            catch (Exception)
            {
            }
        }
Beispiel #14
0
 public void Remove(AppUserToken appUserToken)
 {
     _tokenCommand.Remove(appUserToken.UserId, appUserToken.LoginProvider, appUserToken.Name);
 }
Beispiel #15
0
 public AppUserToken Create(AppUserToken appUserToken)
 {
     db.AppUserTokens.Add(appUserToken);
     db.SaveChanges();
     return(appUserToken);
 }
 public void Add(AppUserToken appUserToken)
 {
     using var tran = _unitOfWork.BeginTransaction();
     _tokenRepository.Add(appUserToken);
     tran.Commit();
 }
Beispiel #17
0
 public AppUserToken Update(AppUserToken appUserToken)
 {
     db.AppUserTokens.Update(appUserToken);
     db.SaveChanges();
     return(appUserToken);
 }
 public async Task UpdateAsync(AppUserToken appUserToken)
 {
     _context.Attach(appUserToken).State = EntityState.Modified;
     await _context.SaveChangesAsync();
 }
Beispiel #19
0
 public void Add(AppUserToken appUserToken)
 {
     _tokenCommand.Execute(appUserToken.UserId, appUserToken.LoginProvider, appUserToken.Name, appUserToken.Value, DateTime.Now, appUserToken.Type);
 }