Ignore:
Timestamp:
02/14/12 18:22:25 (13 years ago)
Author:
hendrikvanantwerpen
Message:
  • Clear LoginDialog? on show (in case of re-show).
  • Allow to link nodes/widgets to rft.ui.Page members with data-rft-attach-point attribute.
  • Allow arguments to a page to be passed with data-rft-props argument. Content loader rft.content sets this argument on the top node of a loaded page.
  • Have longer cookie-lifetime and update cookie when session is restored. Allow session restore in API and client code.
  • Moved startup Javascript to rft/run.js.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Dev/branches/rest-dojo-ui/server/api.php

    r256 r260  
    1212use Tonic\Resource as Resource;
    1313
    14 function restore_session() {
     14function set_session_cookie($response,$user) {
     15    $response->addHeader('Set-Cookie', 'rft_uid=' . $user->uid . '; Max-Age: 3600; Path=' . $response->request->baseUri);
     16}
     17
     18function restore_session($response) {
    1519    if (isset($_COOKIE['rft_uid'])) {
    1620        $user = Auth::restore($_COOKIE['rft_uid']);
    1721        if ($user) {
     22            set_session_cookie($response, $user);
    1823            return $user;
    1924        }
     
    3439        $response = new Response($request);
    3540
    36         if (!empty($request->data)) {
    37             $data = json_decode($request->data);
    38             $user = Auth::login($data->username, sha1($data->password));
    39             if ($user) {
    40                 $response->addHeader('Set-Cookie', 'rft_uid=' . $user->uid . '; Path=' . $request->baseUri);
    41                 $response->body = json_encode($user);
    42             } else {
     41        $user = null;
     42        $data = null;
     43        if ( !empty($request->data) ) {
     44            $data = json_decode($request->data,true);
     45        }
     46        if (!empty($data)) {
     47            $user = Auth::login($data['username'], sha1($data['password']));
     48            if (!$user) {
    4349                throw new ResponseException("Incorrect username and password", Response::UNAUTHORIZED);
    4450            }
    4551        } else {
    46             throw new ResponseException("No login data provided", Response::BADREQUEST);
    47         }
     52            $user = restore_session($response);
     53        }
     54        $response->body = json_encode($user);
    4855        return $response;
    4956    }
     
    6471
    6572    function get($request) {
    66         restore_session();
    67         $response = new Response($request);
     73        $response = new Response($request);
     74        restore_session($response);
    6875
    6976        $type = $this->getType($request);
    70 
    7177        $objects = $type::get(array());
    7278        //$objects = array_map(function($val) { return array('uid' => $val->uid); }, $objects);
     
    7783
    7884    function post($request) {
    79         restore_session();
    80         $response = new Response($request);
     85        $response = new Response($request);
     86        restore_session($response);
    8187
    8288        $type = $this->getType($request);
     
    128134
    129135    function get($request) {
    130         restore_session();
    131         $response = new Response($request);
     136        $response = new Response($request);
     137        restore_session($response);
    132138
    133139        $info = $this->getTypeAndUid($request);
    134 
    135140        $objects = $info['type']::get(array('uid' => $info['uid']));
    136141        if (empty($objects)) {
     
    143148
    144149    function put($request) {
    145         restore_session();
    146         $response = new Response($request);
     150        $response = new Response($request);
     151        restore_session($response);
    147152
    148153        $info = $this->getTypeAndUid($request);
Note: See TracChangeset for help on using the changeset viewer.