1<?php
2/*
3 * Copyright 2011 Google Inc.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18/**
19 * Class to hold information about an authenticated login.
20 *
21 * @author Brian Eaton <beaton@google.com>
22 */
23class Google_LoginTicket {
24  const USER_ATTR = "id";
25
26  // Information from id token envelope.
27  private $envelope;
28
29  // Information from id token payload.
30  private $payload;
31
32  /**
33   * Creates a user based on the supplied token.
34   *
35   * @param string $envelope Header from a verified authentication token.
36   * @param string $payload Information from a verified authentication token.
37   */
38  public function __construct($envelope, $payload) {
39    $this->envelope = $envelope;
40    $this->payload = $payload;
41  }
42
43  /**
44   * Returns the numeric identifier for the user.
45   * @throws Google_AuthException
46   * @return
47   */
48  public function getUserId() {
49    if (array_key_exists(self::USER_ATTR, $this->payload)) {
50      return $this->payload[self::USER_ATTR];
51    }
52    throw new Google_AuthException("No user_id in token");
53  }
54
55  /**
56   * Returns attributes from the login ticket.  This can contain
57   * various information about the user session.
58   * @return array
59   */
60  public function getAttributes() {
61    return array("envelope" => $this->envelope, "payload" => $this->payload);
62  }
63}
64