/// <summary> /// Cria um novo usuário no sistema. /// </summary> /// <param name="username">Nome do usuário.</param> /// <param name="password">Senha de acesso.</param> /// <param name="email">Email associado com o usuário.</param> /// <param name="passwordQuestion">Pergunta para a senha.</param> /// <param name="passwordAnswer">Resposta da pergunta para a recuperação da senha.</param> /// <param name="isApproved">Identifica se o usuário é aprovado.</param> /// <param name="identityProvider">Nome do provedor de identidade do usuário.</param> /// <param name="userKey">Chave que identifica o usuário.</param> /// <param name="ignoreCaptcha">Indica se o usuário irá ignorar o controle por captcha</param> /// <param name="status">Situação do usuário.</param> /// <param name="fullname">Nome do usuário</param> /// <param name="parameters">Parametros adicionais para a criação do usuário</param> /// <returns></returns> public virtual Security.IUser CreateUser(string username, string password, string fullname, string email, string passwordQuestion, string passwordAnswer, bool isApproved, string identityProvider, string userKey, bool ignoreCaptcha, out UserCreateStatus status, params SecurityParameter[] parameters) { IIdentityProviderManager providerFlow = Microsoft.Practices.ServiceLocation.ServiceLocator.Current.GetInstance <IIdentityProviderManager>(); var result = GetUser(username, false) as Security.Authentication.IAutheticableUser; if ((result != null) && (!String.IsNullOrEmpty(result.UserKey))) { status = UserCreateStatus.DuplicateUserName; result = null; } else { result.UserName = username; result.Email = email; result.FullName = fullname; result.IdentityProvider = identityProvider; result.LastPasswordChangedDate = ServerData.GetDateTime(); result.PasswordAnswer = passwordAnswer; result.PasswordQuestion = passwordQuestion; result.UserName = username; result.IdentityProviderId = providerFlow.GetProviderByName(identityProvider).IdentityProviderId; if (InsertUser(result)) { status = UserCreateStatus.Success; result = GetUser(username, false) as Security.Authentication.IAutheticableUser; IAuthenticate provider = Activator.CreateInstance((providerFlow.GetProviderByName(identityProvider).Type)) as IAuthenticate; if (provider.CanCreateUser) { if (provider.CreateNewUser(result, password, parameters).Success) { status = UserCreateStatus.Success; } else { status = UserCreateStatus.DuplicateProviderUserKey; } } } else { status = UserCreateStatus.ProviderError; } } return(result); }