Proyectos de Subversion LeadersLinked - Antes de SPA

Rev

Rev 4842 | Ir a la última revisión | | Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 www 1
<?php
2
/**
3
 * Controlador para manejar todo lo relacionado con las empresas
4
 *
5
 */
6
declare(strict_types=1);
7
 
8
namespace LeadersLinked\Controller;
9
 
10
use Laminas\Db\Adapter\AdapterInterface;
11
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
12
use Laminas\Mvc\Controller\AbstractActionController;
13
use Laminas\Log\LoggerInterface;
14
use Laminas\View\Model\JsonModel;
15
use LeadersLinked\Mapper\UserMapper;
16
use LeadersLinked\Library\Rsa;
17
 
18
class MoodleController extends AbstractActionController
19
{
20
    /**
21
     *
22
     * @var AdapterInterface
23
     */
24
    private $adapter;
25
 
26
 
27
    /**
28
     *
29
     * @var AbstractAdapter
30
     */
31
    private $cache;
32
 
33
    /**
34
     *
35
     * @var  LoggerInterface
36
     */
37
    private $logger;
38
 
39
 
40
    /**
41
     *
42
     * @var array
43
     */
44
    private $config;
45
 
46
 
47
 
48
    /**
49
     *
50
     * @param AdapterInterface $adapter
51
     * @param AbstractAdapter $cache
52
     * @param LoggerInterface $logger
53
     * @param array $config
54
     */
55
    public function __construct($adapter, $cache , $logger, $config)
56
    {
57
        $this->adapter      = $adapter;
58
        $this->cache        = $cache;
59
        $this->logger       = $logger;
60
        $this->config       = $config;
61
    }
62
 
63
    public function indexAction()
64
    {
65
        $request = $this->getRequest();
66
        if($request->isPost()) {
67
 
68
            $currentUserPlugin = $this->plugin('currentUserPlugin');
69
            $currentUser = $currentUserPlugin->getUser();
70
 
71
            $sandbox = $this->config['leaderslinked.runmode.sandbox'];
72
 
73
            if($sandbox) {
74
                $url = $this->config['leaderslinked.moodle.url_sandbox'];
75
            } else {
76
                $url = $this->config['leaderslinked.moodle.url_production'];
77
            }
78
 
79
            $username = $this->config['leaderslinked.moodle.username'];
80
            $password = $this->config['leaderslinked.moodle.password'];
81
            $rsa_n = $this->config['leaderslinked.moodle.rsa_n'];
82
            //$rsa_d = $this->config['leaderslinked.moodle.rsa_d'];
83
            $rsa_e = $this->config['leaderslinked.moodle.rsa_e'];
84
 
85
            $userMapper = UserMapper::getInstance($this->adapter);
86
            $user = $userMapper->fetchOne($currentUser->id);
87
 
88
            if($user->image) {
89
 
90
                $image = file_get_contents($this->config['leaderslinked.fullpath.user'] .$user->uuid.  DIRECTORY_SEPARATOR . '/' . $user->image);
91
 
92
            } else {
93
                $image = '';
94
            }
95
 
96
 
97
            $data = new \stdClass();
98
            $data->first_name = $user->first_name;
99
            $data->last_name = $user->last_name;
100
            $data->email = $user->email;
101
            $data->image_filename =  $user->image;
102
            $data->image_content = $image ? base64_encode($image) : '';
103
 
104
            $data = json_encode($data);
105
 
106
            list($usec, $sec) = explode(' ', microtime());
107
            $seed = intval($sec + ((float) $usec * 100000));
108
 
109
            $timestamp  = date('Y-m-d\TH:i:s');
110
            mt_srand($seed, MT_RAND_MT19937);
111
            $rand =  mt_rand();
112
            $password  = password_hash($username.'-'. $password. '-' . $rand. '-' . $timestamp, PASSWORD_DEFAULT);
113
 
114
            $rsa = Rsa::getInstance();
115
            $data = $rsa->encrypt($data, $rsa_e, $rsa_n);
116
 
117
            $response = [
118
                'success' => true,
119
                'data' => [
120
                    'url' => $url,
121
                    'username' => $username,
122
                    'password' => $password,
123
                    'rand' => $rand,
124
                    'timestamp' => $timestamp,
125
                    'data' => base64_encode($data),
126
 
127
                ]
128
            ];
129
 
130
 
131
            return new JsonModel($response);
132
 
133
        } else {
134
            $data = [
135
                'success' => false,
136
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
137
            ];
138
 
139
            return new JsonModel($data);
140
        }
141
 
142
        return new JsonModel($data);
143
    }
144
 
145
 
146
 
147
}
148