Ejemplo n.º 1
0
 static public bool ValidateAuthToken(string Secret, string Key, out Int64 UserId, out Int64 AuthTokenId)
 {
     try
     {
         Query qry = new Query(UserAuthToken.TableSchema).Where(UserAuthToken.Columns.Secret, Secret).AND(UserAuthToken.Columns.Key, Key);
         UserAuthTokenCollection coll = UserAuthTokenCollection.FetchByQuery(qry);
         if (coll.Count == 1)
         {
             UserAuthToken token = coll[0];
             if (token.Expiry < DateTime.UtcNow || token.Key != EncodeKey(token.UserId, AuthTokenKeySalt_UserId))
             {
                 UserAuthToken.Delete(token.UserAuthTokenId);
                 UserId      = 0;
                 AuthTokenId = 0;
                 return(false);
             }
             else
             {
                 UserId      = token.UserId;
                 AuthTokenId = token.UserAuthTokenId;
                 DateTime newExpiry = DateTime.UtcNow.AddHours(AuthTokenLifeSpan_UserId);
                 if (newExpiry > token.Expiry)
                 {
                     token.Expiry = newExpiry;
                 }
                 token.Save();
                 return(true);
             }
         }
         else
         {
             UserId      = 0;
             AuthTokenId = 0;
             return(false);
         }
     }
     catch
     {
         UserId      = 0;
         AuthTokenId = 0;
         return(false);
     }
 }
Ejemplo n.º 2
0
        static public UserAuthToken GenerateAuthTokenForUserId(Int64 UserId, int LifeTimeInHours)
        {
            int           tries = 3;
            UserAuthToken token = new UserAuthToken();

            token.UserId    = UserId;
            token.CreatedOn = DateTime.UtcNow;
            token.Expiry    = token.CreatedOn.AddHours(LifeTimeInHours > 0 ? LifeTimeInHours : AuthTokenLifeSpan_UserId);
            token.Key       = EncodeKey(UserId, AuthTokenKeySalt_UserId);
            while (tries > 0)
            {
                try
                {
                    token.Secret = Guid.NewGuid();
                    token.Save();
                    return(token);
                }
                catch (System.Data.Common.DbException)
                {
                    tries--;
                }
            }
            return(null);
        }