예제 #1
0
        protected static async Task <ClaimsIdentity> CreateCookieIdentity(IlevusUser user, IlevusUserManager userManager)
        {
            ClaimsIdentity oAuthIdentity = await user.GenerateUserIdentityAsync(userManager, CookieAuthenticationDefaults.AuthenticationType);

            oAuthIdentity.AddClaims(IlevusPermissionsProvider.GetPermissionClaims(user, oAuthIdentity));

            return(oAuthIdentity);
        }
        public static IEnumerable <Claim> GetPermissionClaims(IlevusUser user, ClaimsIdentity identity)
        {
            List <Claim> claims = new List <Claim>();

            if (identity.HasClaim(ClaimTypes.Role, "SysAdmin"))
            {
                claims.Add(CreateClaim("All"));
            }

            return(claims);
        }
예제 #3
0
        private AccountPayment CreateORetrieveStripeAccount(IlevusUser professionalUser)
        {
            AccountPayment accountStripe = null;

            if (professionalUser.Professional.AccountPayment == null)
            {
                accountStripe = CreateAccount(professionalUser);
                professionalUser.Professional.AccountPayment = accountStripe;
                UserManager.Update(professionalUser);
            }

            return(professionalUser.Professional.AccountPayment);
        }
예제 #4
0
        public void MakePayment(HireServiceModel model, IlevusUserManager userManager)
        {
            UserManager = userManager;
            IlevusUser professionalUser = RetrieveUserByService(model.service.Id);

            UserService servicoToHire = professionalUser.Professional.Services.FirstOrDefault(x => x.Id == model.service.Id);

            BuyAService(servicoToHire, model);

            // Verificando se o profissional ja tem conta no stripe. se nao tem se cria.
            AccountPayment accountStripe = CreateORetrieveStripeAccount(professionalUser);

            TransferToProfessional(servicoToHire.Price, accountStripe);
        }
예제 #5
0
        public IEnumerable Get()
        {
            IlevusDBContext repository = IlevusDBContext.Create();
            //User.Identity.Name
            IlevusUser user = UserManager.FindByName(User.Identity.Name);

            if (user.AccountCustumer == null)
            {
                return(null);
            }

            var lista = MongoContext.Current.Find <PaymentsCustomer>(x => x.Customer.Id == user.AccountCustumer.Id);

            return(lista.ToList());
        }
예제 #6
0
        public AccountPayment UpdateAccountWithLegalEntity(IlevusUser user)
        {
            var accountLocal = Mapper.Map <AccountPayment>(user);
            var legalPayment = Mapper.Map <StripeAccountLegalEntityOptions>(accountLocal);

            var accountUpdateOptions = new StripeAccountUpdateOptions
            {
                TosAcceptanceDate = DateTime.Now,
                TosAcceptanceIp   = GetLocalIPAddress(),
                LegalEntity       = legalPayment
            };

            var account = accountService.Update(accountLocal.Id, accountUpdateOptions);

            return(Mapper.Map <AccountPayment>(account));
        }
예제 #7
0
        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            IlevusUserManager userManager = context.OwinContext.GetUserManager <IlevusUserManager>();
            IlevusUser        user        = await userManager.FindAsync(context.UserName, context.Password);

            if (user == null)
            {
                context.SetError("invalid_grant", Messages.AuthInvalidUserCredentials);
                return;
            }

            ClaimsIdentity cookiesIdentity = await CreateCookieIdentity(user, userManager);

            context.Request.Context.Authentication.SignIn(cookiesIdentity);

            ClaimsIdentity oAuthIdentity = await CreateOAuthIdentity(user, userManager);

            AuthenticationProperties properties = CreateProperties(user.UserName);
            AuthenticationTicket     ticket     = new AuthenticationTicket(oAuthIdentity, properties);

            context.Validated(ticket);
        }
예제 #8
0
        public bool AccountIsValid(IlevusUser user)
        {
            //Email = accountLocal.Email,
            //Type = StripeAccountType.Custom,
            //Country = accountLocal.Country,
            //DefaultCurrency = accountLocal.DefaultCurrency
            //.ForMember(para => para.BirthDay, de => de.MapFrom(o => o.DateBirth.Day))
            //	.ForMember(para => para.BirthMonth, de => de.MapFrom(o => o.DateBirth.Month))
            //	.ForMember(para => para.BirthYear, de => de.MapFrom(o => o.DateBirth.Year))
            //	.ForMember(para => para.FirstName, de => de.MapFrom(o => o.FirstName))
            //	.ForMember(para => para.LastName, de => de.MapFrom(o => o.LastName))
            //	.ForMember(para => para.PersonalIdNumber, de => de.MapFrom(o => o.PersonalIdNumber))
            //	.ForMember(para => para.Type, de => de.MapFrom(o => "individual"))

            //	.ForMember(para => para.AddressCity, de => de.MapFrom(o => o.Address.City))
            //	.ForMember(para => para.AddressPostalCode, de => de.MapFrom(o => o.Address.PostalCode))
            //	.ForMember(para => para.AddressLine1, de => de.MapFrom(o => o.Address.Line1))
            //	.ForMember(para => para.AddressLine2, de => de.MapFrom(o => o.Address.Line2))
            //	.ForMember(para => para.AddressState, de => de.MapFrom(o => o.Address.State));


            return(true);
        }
예제 #9
0
        public async Task <ManageInfoViewModel> GetManageInfo(string returnUrl, bool generateState = false)
        {
            IlevusUser user = await UserManager.FindByIdAsync(User.Identity.GetUserId());

            if (user == null)
            {
                return(null);
            }

            List <UserLoginInfoViewModel> logins = new List <UserLoginInfoViewModel>();

            foreach (UserLoginInfo linkedAccount in user.Logins)
            {
                logins.Add(new UserLoginInfoViewModel
                {
                    LoginProvider = linkedAccount.LoginProvider,
                    ProviderKey   = linkedAccount.ProviderKey
                });
            }

            if (user.PasswordHash != null)
            {
                logins.Add(new UserLoginInfoViewModel
                {
                    LoginProvider = LocalLoginProvider,
                    ProviderKey   = user.UserName,
                });
            }

            return(new ManageInfoViewModel
            {
                LocalLoginProvider = LocalLoginProvider,
                Email = user.UserName,
                Logins = logins,
                ExternalLoginProviders = GetExternalLogins(returnUrl, generateState)
            });
        }
예제 #10
0
        public AccountPayment CreateAccount(IlevusUser user)
        {
            var accountLocal = Mapper.Map <AccountPayment>(user);
            var legalPayment = Mapper.Map <StripeAccountLegalEntityOptions>(accountLocal);

            var accountOptions = new StripeAccountCreateOptions()
            {
                Email           = accountLocal.Email,
                Type            = StripeAccountType.Custom,
                Country         = accountLocal.Country,
                DefaultCurrency = accountLocal.DefaultCurrency,
                TransferScheduleWeeklyAnchor = "monday",
                TransferScheduleInterval     = "weekly",
                TosAcceptanceDate            = DateTime.Now,
                TosAcceptanceIp = GetLocalIPAddress(),
                LegalEntity     = legalPayment
            };

            StripeAccount account = accountService.Create(accountOptions);

            user.Professional.AccountPayment = Mapper.Map <AccountPayment>(account);

            return(Mapper.Map <AccountPayment>(account));
        }
예제 #11
0
        public static async Task <JObject> GenerateLocalAccessTokenResponse(IlevusUser user, IlevusUserManager userManager, IOwinContext context)
        {
            ClaimsIdentity cookiesIdentity = await CreateCookieIdentity(user, userManager);

            context.Request.Context.Authentication.SignIn(cookiesIdentity);

            ClaimsIdentity oAuthIdentity = await CreateOAuthIdentity(user, userManager);

            AuthenticationProperties properties = CreateProperties(user.UserName);
            AuthenticationTicket     ticket     = new AuthenticationTicket(oAuthIdentity, properties);

            var accessToken = Startup.OAuthBearerOpts.AccessTokenFormat.Protect(ticket);

            JObject tokenResponse = new JObject(
                new JProperty("userName", user.UserName),
                new JProperty("access_token", accessToken),
                new JProperty("token_type", "bearer"),
                new JProperty("expires_in", Startup.OAuthAuthzOpts.AccessTokenExpireTimeSpan.TotalSeconds.ToString()),
                new JProperty(".issued", ticket.Properties.IssuedUtc.ToString()),
                new JProperty(".expires", ticket.Properties.ExpiresUtc.ToString())
                );

            return(tokenResponse);
        }
예제 #12
0
        public async Task <object> Index()
        {
            //return View();
            HttpResponseMessage result;

            try
            {
                if (Request.RequestUri.Segments.Length == 2)
                {
                    IlevusUser user = null;
                    if (System.Text.RegularExpressions.Regex.IsMatch(Request.RequestUri.Segments[1], @"\A\b[0-9a-fA-F]+\b\Z"))
                    {
                        user = await UserManager.FindByIdAsync(Request.RequestUri.Segments[1]);
                    }

                    // tentativa de buscar pelo nomeUrl
                    if (user == null)
                    {
                        var db         = IlevusDBContext.Create();
                        var builder    = Builders <IlevusUser> .Filter;
                        var filters    = builder.Eq("Professional.NomeURL", Request.RequestUri.Segments[1]);
                        var collection = db.GetUsersCollection();
                        var results    = await collection.FindAsync(filters);

                        var users = await results.ToListAsync();

                        if (users.Count > 0)
                        {
                            string uri = Request.RequestUri.Scheme + "://" +
                                         Request.RequestUri.Authority + "?p=" +
                                         Request.RequestUri.Segments[1];

                            return(Redirect(uri));
                        }
                    }
                    //var path = HttpContext.Current.Server.MapPath("~/index.html");
                    //result = new HttpResponseMessage(HttpStatusCode.OK);
                    //result.Content = new ByteArrayContent(File.ReadAllBytes(path));
                    //result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
                }

                if (Env == "development")
                {
                    var path = HttpContext.Current.Server.MapPath("~/index.html");
                    result         = new HttpResponseMessage(HttpStatusCode.OK);
                    result.Content = new ByteArrayContent(File.ReadAllBytes(path));
                    result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");

                    //string uri = HttpContext.Current.Request.Url + "build/Debug/index.html";
                    //return Redirect(uri);
                }
                else
                {
                    var path = HttpContext.Current.Server.MapPath("~/index.html");
                    result         = new HttpResponseMessage(HttpStatusCode.OK);
                    result.Content = new ByteArrayContent(File.ReadAllBytes(path));
                    result.Content.Headers.ContentType = new MediaTypeHeaderValue("text/html");
                }

                return(result);
            }
            catch (Exception ex)
            {
                Console.Write(ex.Message);
                throw ex;
            }
        }
예제 #13
0
        //Create [email protected] with password=Admin@12345 in the Admin role
        public static void InitializeIdentity(IlevusIdentityContext db)
        {
            var userManager = new IlevusUserManager(new IlevusUserStore(db));
            var roleManager = new IlevusRoleManager(new IlevusRoleStore(db));

            const string email    = "*****@*****.**";
            const string password = "******";

            const string roleName = "SysAdmin";

            //Create Role Admin if it does not exist
            var role = roleManager.FindByName(roleName);

            if (role == null)
            {
                role = new IlevusRole(roleName)
                {
                    Description = "Todas as permissões do sistema."
                };
                var roleresult = roleManager.Create(role);
            }

            var user = userManager.FindByName(email);

            if (user == null)
            {
                user = new IlevusUser
                {
                    UserName       = email,
                    Email          = email,
                    EmailConfirmed = true,
                    Name           = "Administrador",
                    Surname        = "do Sistema",
                    Sex            = "M",
                    PhoneNumber    = "031 999999999",
                    Image          = null,

                    Professional = new UserProfessionalEntity()
                    {
                        City    = "Belo Horizonte",
                        County  = "Minas Gerais",
                        Country = "Brasil",
                        Address = "Sede da Ilevus",
                    }
                };
                var result = userManager.Create(user, password);
                result = userManager.SetLockoutEnabled(user.Id, false);
            }

            // Add user admin to Role Admin if not already added
            var rolesForUser = userManager.GetRoles(user.Id);

            if (!rolesForUser.Contains(role.Name))
            {
                var result = userManager.AddToRole(user.Id, role.Name);
            }


            const string userEmail    = "*****@*****.**";
            const string userPassword = "******";

            const string userRoleName = "User";

            //Create Role Admin if it does not exist
            var userRole = roleManager.FindByName(userRoleName);

            if (userRole == null)
            {
                userRole = new IlevusRole(userRoleName)
                {
                    Description = "Usuário comum do sistema."
                };
                roleManager.Create(userRole);
            }

            var commonUser = userManager.FindByName(userEmail);

            if (commonUser == null)
            {
                commonUser = new IlevusUser
                {
                    UserName       = userEmail,
                    Email          = userEmail,
                    EmailConfirmed = true,
                    Name           = "Usuário",
                    Surname        = "Exemplo",
                    Sex            = "M",
                    PhoneNumber    = "031 988888888",
                    Image          = null,

                    Professional = new UserProfessionalEntity()
                    {
                        City    = "Belo Horizonte",
                        County  = "Minas Gerais",
                        Country = "Brasil",
                        Address = "Sede da Ilevus",
                    }
                };
                var result = userManager.Create(commonUser, userPassword);
                result = userManager.SetLockoutEnabled(commonUser.Id, false);
            }

            // Add user admin to Role Admin if not already added
            var rolesForCommonUser = userManager.GetRoles(commonUser.Id);

            if (!rolesForCommonUser.Contains(userRole.Name))
            {
                var result = userManager.AddToRole(commonUser.Id, userRole.Name);
            }
        }