annotate Agendas/trunk/src/Agendas.Domain/IdentityContext.cs @ 257:730b80afa70d

Ticket #191: Perfil de Usuarios
author juanjose.montesdeocaarbos
date Wed, 19 Oct 2011 09:19:20 -0300
parents 1deccd6c3cb2
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
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
2 using System.Collections.Generic;
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
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
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
9 public class IdentityContext
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
10 {
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
23 {
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
24 if (_current == null)
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
25 throw new IdentityContextNotConfiguredException();
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
26 return _current;
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
27 }
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
28 }
50
3ebe89c88caa Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la
nelopauselli
parents:
diff changeset
29
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
30 public static string GetUserName()
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
31 {
115
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
32 return Current.GetUserName();
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
33 }
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
34
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
35 public static bool IsAuthenticated()
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
36 {
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
37 return !string.IsNullOrWhiteSpace(GetUserName());
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
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
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
42 var userName = GetUserName();
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
43 if (string.IsNullOrWhiteSpace(userName))
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
44 throw new UsuarioNoAutenticadoException();
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
45
7a2eeb9e9bf9 Crear cuenta interna asociada
Nelo@Kenia.neluz.int
parents: 112
diff changeset
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
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
51
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
52 public static bool IsInRole(IEnumerable<string> roles)
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
53 {
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
54 var persona = GetUsuario();
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
55 return IsInRole(persona, roles);
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
56 }
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
57
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
58 public static bool IsInRole(Persona persona, IEnumerable<string> roles)
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
59 {
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
60 if (persona == null) return false;
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
61 return roles.Any(role => persona.Roles.Contains(role));
1deccd6c3cb2 Aplicando seguridad x roles en sitio web
nelopauselli
parents: 115
diff changeset
62 }
54
3059a5f8930f Code cleanup
nelopauselli
parents: 50
diff changeset
63 }
50
3ebe89c88caa Agregando propiedad al Evento sobre el Usuario que lo crea o que realizó la
nelopauselli
parents:
diff changeset
64 }