source: bakesalehq/controllers/users_controller.php @ 376

Revision 121, 3.6 KB checked in by Matti1979, 10 years ago (diff)

First import.

Line 
1<?php
2class UsersController extends AppController {
3        var $uses = array('User', 'Country');
4    var $components = array('Openid');
5        var $scaffold;
6
7
8/**
9 * Show all gateways
10 */
11
12        function beforeFilter() {
13                parent::beforeFilter();
14                $owner = false;
15                if($this->Session->Read('User.id') == $this->params['pass'][0]) {
16                        $owner = true;
17                }
18                $this->set(compact('owner'));
19        }
20
21/**
22 * Show all gateways
23 */
24
25    function index() {
26                $data = $this->paginate('User', array('public' => '1'));
27        $this->set(compact('data'));
28    } 
29
30/**
31 * Show one user
32 */
33
34        function show($id) {
35                Configure::write('debug', 1);
36                $data = $this->User->read(null, $id);
37                $this->set(compact('data'));
38        }
39
40/**
41 * Edit user
42 */
43
44        function edit($id) {
45                if (isset($this->data)) {
46                        if($this->User->save($this->data)) {
47                                $this->Session->setFlash('User info saved');
48                                $this->redirect(array('action' => 'view', 'id' => $id));
49                        }
50                } else {
51                        $this->data = $data = $this->User->read(null, $id);
52                        $countries = $this->Country->find('list');
53                        $this->set('data', 'countries');
54                }
55        }
56
57/**
58 *
59 */
60
61    function login() {
62                $returnTo = 'http://'.$_SERVER['SERVER_NAME'].'/users/login';
63        if (!empty($this->data)) {
64            try {
65                                $this->Openid->authenticate($this->data['OpenidUrl']['openid'], 'http://'.$_SERVER['SERVER_NAME'].'/users/login', 'http://'.$_SERVER['SERVER_NAME'], array('email'), array('dob', 'fullname', 'country'));
66            } catch (InvalidArgumentException $e) {
67                $this->setMessage('Invalid OpenID');
68            } catch (Exception $e) {
69                $this->setMessage($e->getMessage());
70            }
71        } elseif (count($_GET) > 1) {
72            $response = $this->Openid->getResponse($returnTo);
73            if ($response->status == Auth_OpenID_CANCEL) {
74                $this->setMessage('Verification cancelled');
75            } elseif ($response->status == Auth_OpenID_FAILURE) {
76                $this->setMessage('OpenID verification failed: '.$response->message);
77                        } elseif ($response->status == Auth_OpenID_SUCCESS) {
78                        $sregResponse = Auth_OpenID_SRegResponse::fromSuccessResponse($response);
79                        $sreg = $sregResponse->contents();
80                                $sreg['openid'] = $_GET['openid_identity'];
81                                $return = $this->testUser($sreg);
82                                $this->Session->setFlash('successfully authenticated!');
83                        $this->redirect(array('action' => $return['action'], 'id' => $return['id']));
84                                $this->autoRender = false;
85            }
86        }
87    }
88
89/**
90 *
91 */
92
93        function logout(){ 
94                $this->Session->setFlash('Logged out.'); 
95                $this->redirect($this->Auth->logout()); 
96        } 
97
98/**
99 *
100 */
101
102   function setMessage($message) {
103        $this->set(compact('message'));
104    }
105
106/**
107 * check if account exists
108 */
109
110    function testUser($data) {
111                $data['name'] = $data['fullname'];
112                $test = $this->User->findByOpenid($data['openid']);
113                $return['action'] = 'show';
114                if($test) {
115                        $data = array_merge($test['User'], $data);
116                        $this->recreate($data);
117                        $return['id'] = $test['User']['id'];
118                } else {
119                        $return['id'] = $this->add($data);
120                        $return['action'] = 'edit';
121                }
122                $this->Auth->login($return['id']);
123                return $return;
124    }
125
126/**
127 *
128 */
129
130    function recreate($data) {
131                $this->data['User'] = $data;
132                $this->User->save($this->data['User']);
133    }
134
135/**
136 *
137 */
138
139    function add($data) {
140                $this->data['User'] = $data;
141                $this->User->save($this->data);
142                $this->Session->write('User.id', $this->User->getLastInsertID());
143                return $this->User->getLastInsertID();
144    }
145
146}
147?>
Note: See TracBrowser for help on using the repository browser.