Exemple #1
0
def generate_signed_link(user,
                         viewname,
                         referrer=None,
                         args=None,
                         kwargs=None):
    """This returns an absolute URL where the given user is signed in for
    the given viewname with args and kwargs.  This returns a redirect link
    that if followed sends the user to another URL which carries another
    signature that is valid for that URL only.  The user can also be a user
    ID.
    """
    if hasattr(user, "is_authenticated"):
        if not user.is_authenticated():
            raise RuntimeError("Need an authenticated user to sign a link.")
        user_id = user.id
    else:
        user_id = user

    path = reverse(viewname, args=args, kwargs=kwargs)
    item = "%s|%s|%s" % (options.get("system.url-prefix"), path,
                         base36_encode(user_id))
    signature = ":".join(get_signer().sign(item).rsplit(":", 2)[1:])
    signed_link = "%s?_=%s:%s" % (absolute_uri(path), base36_encode(user_id),
                                  signature)
    if referrer:
        signed_link = signed_link + "&" + urlencode({"referrer": referrer})
    return signed_link
Exemple #2
0
def test_base36():
    assert [base36_encode(x) for x in range(128)] == [
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
        'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
        '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D', '1E',
        '1F', '1G', '1H', '1I', '1J', '1K', '1L', '1M', '1N', '1O', '1P', '1Q', '1R', '1S', '1T',
        '1U', '1V', '1W', '1X', '1Y', '1Z', '20', '21', '22', '23', '24', '25', '26', '27', '28',
        '29', '2A', '2B', '2C', '2D', '2E', '2F', '2G', '2H', '2I', '2J', '2K', '2L', '2M', '2N',
        '2O', '2P', '2Q', '2R', '2S', '2T', '2U', '2V', '2W', '2X', '2Y', '2Z', '30', '31', '32',
        '33', '34', '35', '36', '37', '38', '39', '3A', '3B', '3C', '3D', '3E', '3F', '3G', '3H',
        '3I', '3J'
    ]

    assert [base36_decode(base36_encode(x)) for x in range(128)] == list(map(int, range(128)))
Exemple #3
0
def test_base36():
    assert [base36_encode(x) for x in range(128)] == [
        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D',
        'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
        'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '10', '11', '12', '13', '14',
        '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D', '1E', '1F', '1G',
        '1H', '1I', '1J', '1K', '1L', '1M', '1N', '1O', '1P', '1Q', '1R', '1S',
        '1T', '1U', '1V', '1W', '1X', '1Y', '1Z', '20', '21', '22', '23', '24',
        '25', '26', '27', '28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '2G',
        '2H', '2I', '2J', '2K', '2L', '2M', '2N', '2O', '2P', '2Q', '2R', '2S',
        '2T', '2U', '2V', '2W', '2X', '2Y', '2Z', '30', '31', '32', '33', '34',
        '35', '36', '37', '38', '39', '3A', '3B', '3C', '3D', '3E', '3F', '3G',
        '3H', '3I', '3J'
    ]

    assert [base36_decode(base36_encode(x))
            for x in range(128)] == list(map(int, range(128)))
Exemple #4
0
def generate_signed_link(user, viewname, args=None, kwargs=None):
    """This returns an absolute URL where the given user is signed in for
    the given viewname with args and kwargs.  This returns a redirect link
    that if followed sends the user to another URL which carries another
    signature that is valid for that URL only.  The user can also be a user
    ID.
    """
    if hasattr(user, 'is_authenticated'):
        if not user.is_authenticated():
            raise RuntimeError('Need an authenticated user to sign a link.')
        user_id = user.id
    else:
        user_id = user

    path = reverse(viewname, args=args, kwargs=kwargs)
    item = '%s|%s|%s' % (options.get('system.url-prefix'), path, base36_encode(user_id))
    signature = ':'.join(get_signer().sign(item).rsplit(':', 2)[1:])

    return '%s?_=%s:%s' % (absolute_uri(path), base36_encode(user_id), signature, )
Exemple #5
0
def generate_signed_link(user, viewname, args=None, kwargs=None):
    """This returns an absolute URL where the given user is signed in for
    the given viewname with args and kwargs.  This returns a redirect link
    that if followed sends the user to another URL which carries another
    signature that is valid for that URL only.  The user can also be a user
    ID.
    """
    if hasattr(user, 'is_authenticated'):
        if not user.is_authenticated():
            raise RuntimeError('Need an authenticated user to sign a link.')
        user_id = user.id
    else:
        user_id = user

    path = reverse(viewname, args=args, kwargs=kwargs)
    item = '%s|%s|%s' % (options.get('system.url-prefix'), path,
                         base36_encode(user_id))
    signature = ':'.join(get_signer().sign(item).rsplit(':', 2)[1:])

    return '%s?_=%s:%s' % (
        absolute_uri(path),
        base36_encode(user_id),
        signature,
    )
Exemple #6
0
def test_base36():
    assert [base36_encode(x) for x in range(128)] == [
        "0",
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "A",
        "B",
        "C",
        "D",
        "E",
        "F",
        "G",
        "H",
        "I",
        "J",
        "K",
        "L",
        "M",
        "N",
        "O",
        "P",
        "Q",
        "R",
        "S",
        "T",
        "U",
        "V",
        "W",
        "X",
        "Y",
        "Z",
        "10",
        "11",
        "12",
        "13",
        "14",
        "15",
        "16",
        "17",
        "18",
        "19",
        "1A",
        "1B",
        "1C",
        "1D",
        "1E",
        "1F",
        "1G",
        "1H",
        "1I",
        "1J",
        "1K",
        "1L",
        "1M",
        "1N",
        "1O",
        "1P",
        "1Q",
        "1R",
        "1S",
        "1T",
        "1U",
        "1V",
        "1W",
        "1X",
        "1Y",
        "1Z",
        "20",
        "21",
        "22",
        "23",
        "24",
        "25",
        "26",
        "27",
        "28",
        "29",
        "2A",
        "2B",
        "2C",
        "2D",
        "2E",
        "2F",
        "2G",
        "2H",
        "2I",
        "2J",
        "2K",
        "2L",
        "2M",
        "2N",
        "2O",
        "2P",
        "2Q",
        "2R",
        "2S",
        "2T",
        "2U",
        "2V",
        "2W",
        "2X",
        "2Y",
        "2Z",
        "30",
        "31",
        "32",
        "33",
        "34",
        "35",
        "36",
        "37",
        "38",
        "39",
        "3A",
        "3B",
        "3C",
        "3D",
        "3E",
        "3F",
        "3G",
        "3H",
        "3I",
        "3J",
    ]

    assert [base36_decode(base36_encode(x))
            for x in range(128)] == list(range(128))
Exemple #7
0
def test_base36():
    assert [base36_encode(x) for x in xrange(128)] == [
        "0",
        "1",
        "2",
        "3",
        "4",
        "5",
        "6",
        "7",
        "8",
        "9",
        "A",
        "B",
        "C",
        "D",
        "E",
        "F",
        "G",
        "H",
        "I",
        "J",
        "K",
        "L",
        "M",
        "N",
        "O",
        "P",
        "Q",
        "R",
        "S",
        "T",
        "U",
        "V",
        "W",
        "X",
        "Y",
        "Z",
        "10",
        "11",
        "12",
        "13",
        "14",
        "15",
        "16",
        "17",
        "18",
        "19",
        "1A",
        "1B",
        "1C",
        "1D",
        "1E",
        "1F",
        "1G",
        "1H",
        "1I",
        "1J",
        "1K",
        "1L",
        "1M",
        "1N",
        "1O",
        "1P",
        "1Q",
        "1R",
        "1S",
        "1T",
        "1U",
        "1V",
        "1W",
        "1X",
        "1Y",
        "1Z",
        "20",
        "21",
        "22",
        "23",
        "24",
        "25",
        "26",
        "27",
        "28",
        "29",
        "2A",
        "2B",
        "2C",
        "2D",
        "2E",
        "2F",
        "2G",
        "2H",
        "2I",
        "2J",
        "2K",
        "2L",
        "2M",
        "2N",
        "2O",
        "2P",
        "2Q",
        "2R",
        "2S",
        "2T",
        "2U",
        "2V",
        "2W",
        "2X",
        "2Y",
        "2Z",
        "30",
        "31",
        "32",
        "33",
        "34",
        "35",
        "36",
        "37",
        "38",
        "39",
        "3A",
        "3B",
        "3C",
        "3D",
        "3E",
        "3F",
        "3G",
        "3H",
        "3I",
        "3J",
    ]

    assert [base36_decode(base36_encode(x)) for x in xrange(128)] == range(128)