Proyectos de Subversion Moodle

Rev

Rev 1391 | Rev 1393 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1391 Rev 1392
Línea 218... Línea 218...
218
}
218
}
Línea 219... Línea 219...
219
 
219
 
220
// Obtención de datos completos del usuario y login
220
// Obtención de datos completos del usuario y login
221
$user = get_complete_user_data('id', $user->id);
221
$user = get_complete_user_data('id', $user->id);
222
if ($user) {
222
if ($user) {
223
    // Verificar si el usuario ya está conectado
223
    // Si hay una sesión existente, cerrarla primero
224
    if (!isloggedin()) {
-
 
225
        // Verificar si la cuenta está confirmada
-
 
226
        if (empty($user->confirmed)) {
-
 
227
            echo json_encode(['success' => false, 'data' => 'ACCOUNT_NOT_CONFIRMED']);
224
    if (isloggedin()) {
228
            exit;
225
        require_logout();
Línea 229... Línea 226...
229
        }
226
    }
230
 
-
 
231
        // Verificar si la contraseña ha expirado (solo para autenticación LDAP)
-
 
232
        $userauth = get_auth_plugin($user->auth);
-
 
233
        if (!isguestuser() && !empty($userauth->config->expiration) && $userauth->config->expiration == 1) {
227
 
234
            $days2expire = $userauth->password_expire($user->username);
228
    // Verificar si la cuenta está confirmada
235
            if (intval($days2expire) < 0) {
-
 
236
                echo json_encode(['success' => false, 'data' => 'PASSWORD_EXPIRED']);
229
    if (empty($user->confirmed)) {
237
                exit;
230
        echo json_encode(['success' => false, 'data' => 'ACCOUNT_NOT_CONFIRMED']);
Línea 238... Línea 231...
238
            }
231
        exit;
239
        }
232
    }
-
 
233
 
-
 
234
    // Verificar si la contraseña ha expirado (solo para autenticación LDAP)
-
 
235
    $userauth = get_auth_plugin($user->auth);
-
 
236
    if (!isguestuser() && !empty($userauth->config->expiration) && $userauth->config->expiration == 1) {
-
 
237
        $days2expire = $userauth->password_expire($user->username);
-
 
238
        if (intval($days2expire) < 0) {
-
 
239
            echo json_encode(['success' => false, 'data' => 'PASSWORD_EXPIRED']);
Línea 240... Línea 240...
240
 
240
            exit;
241
        // Completar el proceso de inicio de sesión
241
        }
Línea 242... Línea 242...
242
        complete_user_login($user);
242
    }
243
 
-
 
244
        // Aplicar límite de inicio de sesión concurrente
-
 
245
        \core\session\manager::apply_concurrent_login_limit($user->id, session_id());
-
 
246
 
243
 
247
        // Configurar cookie de nombre de usuario
-
 
248
        if (!empty($CFG->nolastloggedin)) {
-
 
249
            // No almacenar último usuario conectado en cookie
-
 
250
        } else if (empty($CFG->rememberusername)) {
-
 
Línea 251... Línea 244...
251
            // Sin cookies permanentes, eliminar la anterior si existe
244
    // Completar el proceso de inicio de sesión
252
            set_moodle_cookie('');
-
 
253
        } else {
245
    complete_user_login($user);
254
            set_moodle_cookie($user->username);
-
 
255
        }
246
 
256
 
247
    // Aplicar límite de inicio de sesión concurrente
257
        // Limpiar mensajes de error antes de la última redirección
-
 
258
        unset($SESSION->loginerrormsg);
248
    \core\session\manager::apply_concurrent_login_limit($user->id, session_id());
259
        unset($SESSION->logininfomsg);
-
 
260
 
-
 
261
        // Descartar loginredirect si estamos redirigiendo
-
 
262
        unset($SESSION->loginredirect);
249
 
263
 
-
 
264
        // Probar que la sesión funciona redirigiendo a sí mismo
-
 
265
        $SESSION->wantsurl = $CFG->wwwroot . '/my';
-
 
266
 
-
 
267
        // Enviar respuesta exitosa con datos del usuario
-
 
268
        echo json_encode([
-
 
269
            'success' => true,
-
 
270
            'data' => [
-
 
271
                'userid' => $user->id,
-
 
272
                'username' => $user->username,
250
    // Configurar cookie de nombre de usuario
273
                'fullname' => fullname($user),
251
    if (!empty($CFG->nolastloggedin)) {
274
                'email' => $user->email,
252
        // No almacenar último usuario conectado en cookie
-
 
253
    } else if (empty($CFG->rememberusername)) {
-
 
254
        // Sin cookies permanentes, eliminar la anterior si existe
-
 
255
        set_moodle_cookie('');
-
 
256
    } else {
-
 
257
        set_moodle_cookie($user->username);
-
 
258
    }
-
 
259
 
-
 
260
    // Limpiar mensajes de error antes de la última redirección
-
 
261
    unset($SESSION->loginerrormsg);
-
 
262
    unset($SESSION->logininfomsg);
-
 
263
 
-
 
264
    // Descartar loginredirect si estamos redirigiendo
-
 
265
    unset($SESSION->loginredirect);
-
 
266
 
-
 
267
    // Probar que la sesión funciona redirigiendo a sí mismo
-
 
268
    $SESSION->wantsurl = $CFG->wwwroot . '/my';
-
 
269
 
-
 
270
    // Enviar respuesta exitosa con datos del usuario
-
 
271
    echo json_encode([
-
 
272
        'success' => true,
-
 
273
        'data' => [
-
 
274
            'userid' => $user->id,
275
                'redirect' => $CFG->wwwroot . '/my'
275
            'username' => $user->username,
276
            ]
276
            'fullname' => fullname($user),
277
        ]);
277
            'email' => $user->email,
278
    } else {
278
            'redirect' => $CFG->wwwroot . '/my'