Proyectos de Subversion Moodle

Rev

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

Rev 1390 Rev 1391
Línea 217... Línea 217...
217
    }
217
    }
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
echo json_encode(['success' => false, 'data' => $user->id]);
223
    // Verificar si el usuario ya está conectado
-
 
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']);
-
 
228
            exit;
-
 
229
        }
-
 
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) {
-
 
234
            $days2expire = $userauth->password_expire($user->username);
-
 
235
            if (intval($days2expire) < 0) {
-
 
236
                echo json_encode(['success' => false, 'data' => 'PASSWORD_EXPIRED']);
-
 
237
                exit;
-
 
238
            }
-
 
239
        }
-
 
240
 
223
if (!isloggedin()) {
241
        // Completar el proceso de inicio de sesión
-
 
242
        complete_user_login($user);
-
 
243
 
-
 
244
        // Aplicar límite de inicio de sesión concurrente
224
    complete_user_login($user);
245
        \core\session\manager::apply_concurrent_login_limit($user->id, session_id());
-
 
246
 
-
 
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)) {
-
 
251
            // Sin cookies permanentes, eliminar la anterior si existe
-
 
252
            set_moodle_cookie('');
-
 
253
        } else {
-
 
254
            set_moodle_cookie($user->username);
Línea -... Línea 255...
-
 
255
        }
-
 
256
 
-
 
257
        // Limpiar mensajes de error antes de la última redirección
-
 
258
        unset($SESSION->loginerrormsg);
-
 
259
        unset($SESSION->logininfomsg);
-
 
260
 
-
 
261
        // Descartar loginredirect si estamos redirigiendo
-
 
262
        unset($SESSION->loginredirect);
-
 
263
 
-
 
264
        // Probar que la sesión funciona redirigiendo a sí mismo
225
}
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,
226
 
273
                'fullname' => fullname($user),
-
 
274
                'email' => $user->email,
-
 
275
                'redirect' => $CFG->wwwroot . '/my'
-
 
276
            ]
-
 
277
        ]);
-
 
278
    } else {
-
 
279
        echo json_encode(['success' => false, 'data' => 'USER_ALREADY_LOGGED_IN']);
-
 
280
    }
-
 
281
} else {
227
// Redirección a la página personal del usuario
282
    echo json_encode(['success' => false, 'data' => 'USER_NOT_FOUND']);