view Agendas/trunk/src/Agendas.Domain/IdentityContext.cs @ 101:9bfdd5bf3ad2

Manejo de estados de los Eventos mediante state pattern (primer version)
author jorge.rowies
date Sun, 05 Jun 2011 11:10:32 -0300
parents db4b1e2cae49
children 0bca45e1e664
line wrap: on
line source

using System;
using AltNetHispano.Agendas.Domain.Exceptions;
using AltNetHispano.Agendas.Domain.Repositories;

namespace AltNetHispano.Agendas.Domain
{
	public class IdentityContext
	{
		private static ISeguridad _current;
		private static IPersonaRepository _personaRepository;

		public static void Init(ISeguridad seguridad, IPersonaRepository personaRepository)
		{
			_current = seguridad;
			_personaRepository = personaRepository;
		}

		private static ISeguridad Current
		{
			get
			{
				if (_current == null)
					throw new IdentityContextNotConfiguredException();
				return _current;
			}
		}

		public static string GetUserName()
		{
			string username = Current.GetUserName();
			if (string.IsNullOrWhiteSpace(username))
				throw new UsuarioNoAutenticadoException();
			return username;
		}

		public static Persona GetUsuario()
		{
			var cuenta = _personaRepository.GetCuenta(IdentityProviderEnum.Twitter, GetUserName());
			return cuenta != null ? cuenta.Persona : null;
		}
	}
}