Mercurial > altnet-hispano
annotate Agendas/trunk/src/Agendas.Domain/IdentityContext.cs @ 179:1deccd6c3cb2
Aplicando seguridad x roles en sitio web
author | nelopauselli |
---|---|
date | Mon, 08 Aug 2011 15:24:26 -0300 |
parents | 7a2eeb9e9bf9 |
children |
rev | line source |
---|---|
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
1 using System; |
179 | 2 using System.Collections.Generic; |
3 using System.Linq; | |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
4 using AltNetHispano.Agendas.Domain.Exceptions; |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
5 using AltNetHispano.Agendas.Domain.Repositories; |
50
3ebe89c88caa
Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la
nelopauselli
parents:
diff
changeset
|
6 |
3ebe89c88caa
Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la
nelopauselli
parents:
diff
changeset
|
7 namespace AltNetHispano.Agendas.Domain |
3ebe89c88caa
Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la
nelopauselli
parents:
diff
changeset
|
8 { |
54 | 9 public class IdentityContext |
10 { | |
11 private static ISeguridad _current; | |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
12 private static IPersonaRepository _personaRepository; |
50
3ebe89c88caa
Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la
nelopauselli
parents:
diff
changeset
|
13 |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
14 public static void Init(ISeguridad seguridad, IPersonaRepository personaRepository) |
54 | 15 { |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
16 _current = seguridad; |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
17 _personaRepository = personaRepository; |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
18 } |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
19 |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
20 private static ISeguridad Current |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
21 { |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
22 get |
54 | 23 { |
24 if (_current == null) | |
25 throw new IdentityContextNotConfiguredException(); | |
26 return _current; | |
27 } | |
28 } | |
50
3ebe89c88caa
Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la
nelopauselli
parents:
diff
changeset
|
29 |
54 | 30 public static string GetUserName() |
31 { | |
115 | 32 return Current.GetUserName(); |
33 } | |
34 | |
35 public static bool IsAuthenticated() | |
36 { | |
37 return !string.IsNullOrWhiteSpace(GetUserName()); | |
54 | 38 } |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
39 |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
40 public static Persona GetUsuario() |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
41 { |
115 | 42 var userName = GetUserName(); |
43 if (string.IsNullOrWhiteSpace(userName)) | |
44 throw new UsuarioNoAutenticadoException(); | |
45 | |
46 var identification = new Identification(userName); | |
112
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
47 |
0bca45e1e664
Pantalla de Perfil donde se puede asociar la cuenta de twitter al usuario existente
Nelo@Kenia.neluz.int
parents:
94
diff
changeset
|
48 var cuenta = _personaRepository.GetCuenta(identification.IdentityProvider, identification.LogonName); |
94
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
49 return cuenta != null ? cuenta.Persona : null; |
db4b1e2cae49
Cambio del nombre de la clase Ponente a Persona
Nelo@Kenia.neluz.int
parents:
54
diff
changeset
|
50 } |
179 | 51 |
52 public static bool IsInRole(IEnumerable<string> roles) | |
53 { | |
54 var persona = GetUsuario(); | |
55 return IsInRole(persona, roles); | |
56 } | |
57 | |
58 public static bool IsInRole(Persona persona, IEnumerable<string> roles) | |
59 { | |
60 if (persona == null) return false; | |
61 return roles.Any(role => persona.Roles.Contains(role)); | |
62 } | |
54 | 63 } |
50
3ebe89c88caa
Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la
nelopauselli
parents:
diff
changeset
|
64 } |