Artifact a530e4030bf670284854edcca5b0e1aa30615428315dab3cae6cf069ebf2d07b:


0000: 3c 3f 70 68 70 0a 6e 61 6d 65 73 70 61 63 65 20  <?php.namespace 
0010: 47 61 72 72 61 64 69 6e 3b 0a 0a 63 6f 6e 73 74  Garradin;..const
0020: 20 4c 4f 47 49 4e 5f 50 52 4f 43 45 53 53 20 3d   LOGIN_PROCESS =
0030: 20 74 72 75 65 3b 0a 0a 72 65 71 75 69 72 65 5f   true;..require_
0040: 6f 6e 63 65 20 5f 5f 44 49 52 5f 5f 20 2e 20 27  once __DIR__ . '
0050: 2f 5f 69 6e 63 2e 70 68 70 27 3b 0a 0a 2f 2f 20  /_inc.php';..// 
0060: 4c 27 75 74 69 6c 69 73 61 74 65 75 72 20 65 73  L'utilisateur es
0070: 74 20 64 c3 a9 6a c3 a0 20 63 6f 6e 6e 65 63 74  t d..j.. connect
0080: c3 a9 0a 69 66 20 28 24 73 65 73 73 69 6f 6e 2d  ...if ($session-
0090: 3e 69 73 4c 6f 67 67 65 64 28 29 29 0a 7b 0a 20  >isLogged()).{. 
00a0: 20 20 20 55 74 69 6c 73 3a 3a 72 65 64 69 72 65     Utils::redire
00b0: 63 74 28 41 44 4d 49 4e 5f 55 52 4c 20 2e 20 27  ct(ADMIN_URL . '
00c0: 27 29 3b 0a 7d 0a 0a 2f 2f 20 52 65 6c 61 6e 63  ');.}..// Relanc
00d0: 65 20 73 65 73 73 69 6f 6e 5f 73 74 61 72 74 20  e session_start 
00e0: 65 74 20 72 65 6e 76 6f 69 65 20 75 6e 65 20 69  et renvoie une i
00f0: 6d 61 67 65 20 64 65 20 31 70 78 20 74 72 61 6e  mage de 1px tran
0100: 73 70 61 72 65 6e 74 65 0a 69 66 20 28 71 67 28  sparente.if (qg(
0110: 27 6b 65 65 70 53 65 73 73 69 6f 6e 41 6c 69 76  'keepSessionAliv
0120: 65 27 29 20 21 3d 3d 20 6e 75 6c 6c 29 0a 7b 0a  e') !== null).{.
0130: 20 20 20 20 24 73 65 73 73 69 6f 6e 2d 3e 6b 65      $session->ke
0140: 65 70 41 6c 69 76 65 28 29 3b 0a 0a 20 20 20 20  epAlive();..    
0150: 68 65 61 64 65 72 28 27 43 61 63 68 65 2d 43 6f  header('Cache-Co
0160: 6e 74 72 6f 6c 3a 20 6e 6f 2d 63 61 63 68 65 2c  ntrol: no-cache,
0170: 20 6d 75 73 74 2d 72 65 76 61 6c 69 64 61 74 65   must-revalidate
0180: 27 29 3b 0a 20 20 20 20 68 65 61 64 65 72 28 27  ');.    header('
0190: 45 78 70 69 72 65 73 3a 20 4d 6f 6e 2c 20 32 36  Expires: Mon, 26
01a0: 20 4a 75 6c 20 31 39 39 37 20 30 35 3a 30 30 3a   Jul 1997 05:00:
01b0: 30 30 20 47 4d 54 27 29 3b 0a 0a 20 20 20 20 68  00 GMT');..    h
01c0: 65 61 64 65 72 28 27 43 6f 6e 74 65 6e 74 2d 54  eader('Content-T
01d0: 79 70 65 3a 20 69 6d 61 67 65 2f 67 69 66 27 29  ype: image/gif')
01e0: 3b 0a 20 20 20 20 65 63 68 6f 20 62 61 73 65 36  ;.    echo base6
01f0: 34 5f 64 65 63 6f 64 65 28 22 52 30 6c 47 4f 44  4_decode("R0lGOD
0200: 6c 68 41 51 41 42 41 49 41 41 41 50 2f 2f 2f 2f  lhAQABAIAAAP////
0210: 2f 2f 2f 79 48 35 42 41 45 4b 41 41 45 41 4c 41  ///yH5BAEKAAEALA
0220: 41 41 41 41 41 42 41 41 45 41 41 41 49 43 54 41  AAAAABAAEAAAICTA
0230: 45 41 4f 77 3d 3d 22 29 3b 0a 0a 20 20 20 20 65  EAOw==");..    e
0240: 78 69 74 3b 0a 7d 0a 0a 24 63 68 61 6d 70 73 20  xit;.}..$champs 
0250: 3d 20 24 63 6f 6e 66 69 67 2d 3e 67 65 74 28 27  = $config->get('
0260: 63 68 61 6d 70 73 5f 6d 65 6d 62 72 65 73 27 29  champs_membres')
0270: 3b 0a 24 69 64 5f 66 69 65 6c 64 20 3d 20 28 6f  ;.$id_field = (o
0280: 62 6a 65 63 74 29 20 24 63 68 61 6d 70 73 2d 3e  bject) $champs->
0290: 67 65 74 28 24 63 6f 6e 66 69 67 2d 3e 67 65 74  get($config->get
02a0: 28 27 63 68 61 6d 70 5f 69 64 65 6e 74 69 66 69  ('champ_identifi
02b0: 61 6e 74 27 29 29 3b 0a 24 69 64 5f 66 69 65 6c  ant'));.$id_fiel
02c0: 64 5f 6e 61 6d 65 20 3d 20 24 69 64 5f 66 69 65  d_name = $id_fie
02d0: 6c 64 2d 3e 74 69 74 6c 65 3b 0a 0a 24 66 6f 72  ld->title;..$for
02e0: 6d 2d 3e 72 75 6e 49 66 28 27 6c 6f 67 69 6e 27  m->runIf('login'
02f0: 2c 20 66 75 6e 63 74 69 6f 6e 20 28 29 20 75 73  , function () us
0300: 65 20 28 24 69 64 5f 66 69 65 6c 64 5f 6e 61 6d  e ($id_field_nam
0310: 65 2c 20 24 73 65 73 73 69 6f 6e 29 20 7b 0a 20  e, $session) {. 
0320: 20 20 20 69 66 20 28 21 74 72 69 6d 28 66 28 27     if (!trim(f('
0330: 5f 69 64 27 29 29 29 20 7b 0a 20 20 20 20 20 20  _id'))) {.      
0340: 20 20 74 68 72 6f 77 20 6e 65 77 20 55 73 65 72    throw new User
0350: 45 78 63 65 70 74 69 6f 6e 28 73 70 72 69 6e 74  Exception(sprint
0360: 66 28 27 4c 5c 27 69 64 65 6e 74 69 66 69 61 6e  f('L\'identifian
0370: 74 20 28 25 73 29 20 6e 5c 27 61 20 70 61 73 20  t (%s) n\'a pas 
0380: c3 a9 74 c3 a9 20 72 65 6e 73 65 69 67 6e c3 a9  ..t.. renseign..
0390: 2e 27 2c 20 24 69 64 5f 66 69 65 6c 64 5f 6e 61  .', $id_field_na
03a0: 6d 65 29 29 3b 0a 20 20 20 20 7d 0a 0a 20 20 20  me));.    }..   
03b0: 20 69 66 20 28 21 74 72 69 6d 28 66 28 27 70 61   if (!trim(f('pa
03c0: 73 73 77 6f 72 64 27 29 29 29 20 7b 0a 20 20 20  ssword'))) {.   
03d0: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 55       throw new U
03e0: 73 65 72 45 78 63 65 70 74 69 6f 6e 28 27 4c 65  serException('Le
03f0: 20 6d 6f 74 20 64 65 20 70 61 73 73 65 20 6e 5c   mot de passe n\
0400: 27 61 20 70 61 73 20 c3 a9 74 c3 a9 20 72 65 6e  'a pas ..t.. ren
0410: 73 65 69 67 6e c3 a9 2e 27 29 3b 0a 20 20 20 20  seign...');.    
0420: 7d 0a 0a 20 20 20 20 69 66 20 28 21 24 73 65 73  }..    if (!$ses
0430: 73 69 6f 6e 2d 3e 6c 6f 67 69 6e 28 66 28 27 5f  sion->login(f('_
0440: 69 64 27 29 2c 20 66 28 27 70 61 73 73 77 6f 72  id'), f('passwor
0450: 64 27 29 2c 20 28 62 6f 6f 6c 29 20 66 28 27 70  d'), (bool) f('p
0460: 65 72 6d 61 6e 65 6e 74 27 29 29 29 20 7b 0a 20  ermanent'))) {. 
0470: 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
0480: 20 55 73 65 72 45 78 63 65 70 74 69 6f 6e 28 73   UserException(s
0490: 70 72 69 6e 74 66 28 22 43 6f 6e 6e 65 78 69 6f  printf("Connexio
04a0: 6e 20 69 6d 70 6f 73 73 69 62 6c 65 2e 5c 6e 56  n impossible.\nV
04b0: c3 a9 72 69 66 69 65 7a 20 76 6f 74 72 65 20 69  ..rifiez votre i
04c0: 64 65 6e 74 69 66 69 61 6e 74 20 28 25 73 29 20  dentifiant (%s) 
04d0: 65 74 20 76 6f 74 72 65 20 6d 6f 74 20 64 65 20  et votre mot de 
04e0: 70 61 73 73 65 2e 22 2c 20 24 69 64 5f 66 69 65  passe.", $id_fie
04f0: 6c 64 5f 6e 61 6d 65 29 29 3b 0a 20 20 20 20 7d  ld_name));.    }
0500: 0a 7d 2c 20 27 6c 6f 67 69 6e 27 2c 20 41 44 4d  .}, 'login', ADM
0510: 49 4e 5f 55 52 4c 29 3b 0a 0a 24 74 70 6c 2d 3e  IN_URL);..$tpl->
0520: 61 73 73 69 67 6e 28 27 73 73 6c 5f 65 6e 61 62  assign('ssl_enab
0530: 6c 65 64 27 2c 20 65 6d 70 74 79 28 24 5f 53 45  led', empty($_SE
0540: 52 56 45 52 5b 27 48 54 54 50 53 27 5d 29 20 3f  RVER['HTTPS']) ?
0550: 20 66 61 6c 73 65 20 3a 20 74 72 75 65 29 3b 0a   false : true);.
0560: 24 74 70 6c 2d 3e 61 73 73 69 67 6e 28 27 70 72  $tpl->assign('pr
0570: 65 66 65 72 5f 73 73 6c 27 2c 20 28 62 6f 6f 6c  efer_ssl', (bool
0580: 29 50 52 45 46 45 52 5f 48 54 54 50 53 29 3b 0a  )PREFER_HTTPS);.
0590: 24 74 70 6c 2d 3e 61 73 73 69 67 6e 28 27 6f 77  $tpl->assign('ow
05a0: 6e 5f 68 74 74 70 73 5f 75 72 6c 27 2c 20 73 74  n_https_url', st
05b0: 72 5f 72 65 70 6c 61 63 65 28 27 68 74 74 70 3a  r_replace('http:
05c0: 2f 2f 27 2c 20 27 68 74 74 70 73 3a 2f 2f 27 2c  //', 'https://',
05d0: 20 55 74 69 6c 73 3a 3a 67 65 74 53 65 6c 66 55   Utils::getSelfU
05e0: 52 49 28 29 29 29 3b 0a 0a 24 74 70 6c 2d 3e 61  RI()));..$tpl->a
05f0: 73 73 69 67 6e 28 63 6f 6d 70 61 63 74 28 27 69  ssign(compact('i
0600: 64 5f 66 69 65 6c 64 5f 6e 61 6d 65 27 29 29 3b  d_field_name'));
0610: 0a 24 74 70 6c 2d 3e 61 73 73 69 67 6e 28 27 63  .$tpl->assign('c
0620: 68 61 6e 67 65 64 27 2c 20 71 67 28 27 63 68 61  hanged', qg('cha
0630: 6e 67 65 64 27 29 20 21 3d 3d 20 6e 75 6c 6c 29  nged') !== null)
0640: 3b 0a 0a 24 74 70 6c 2d 3e 64 69 73 70 6c 61 79  ;..$tpl->display
0650: 28 27 61 64 6d 69 6e 2f 6c 6f 67 69 6e 2e 74 70  ('admin/login.tp
0660: 6c 27 29 3b                                      l');