Ejemplo n.º 1
0
        public override Task TokenEndpoint(OAuthTokenEndpointContext context)
        {
            foreach (KeyValuePair <string, string> property in context.Properties.Dictionary)
            {
                context.AdditionalResponseParameters.Add(property.Key, property.Value);
            }

            /*  Début : i Added Additional Parameters to be shown after login in Json Response ( in Postman Client ) */

            var db = new GatewayPCIPINContext();

            var users_list       = db.AspNetUsers.ToList();
            var user_id_Identity = context.Identity.GetUserId();

            var organanization_id = (from u in users_list
                                     where u.Id == user_id_Identity
                                     select u.Organization_Id).Single();

            var isBlocked = (from u in users_list
                             where u.Id == user_id_Identity
                             select u.isBlocked).Single();

            //var organanization_id = db.AspNetUsers.Select(u => u.Organization_Id).Where(u => user_id_Identity ).Single();

            context.AdditionalResponseParameters.Add("userID", context.Identity.GetUserId()); // added by me to be shown in json response
            context.AdditionalResponseParameters.Add("organizationID", organanization_id);    // added by me to be shown in json response
            context.AdditionalResponseParameters.Add("isBlocked", isBlocked);                 // added by me to be shown in json response

            //get_auth_token = context.Options.AccessTokenProvider.ToString();

            /*  Fin : i Added Additional Parameters to be shown after login in Json Response ( in Postman Client )  */

            return(Task.FromResult <object>(null));
        }
 public DatabaseFactory()
 {
     dataContext = new GatewayPCIPINContext();
 }
 public AuthenticationRepository()
 {
     _ctx         = new GatewayPCIPINContext();
     _userManager = new UserManager <IdentityUser>(new UserStore <IdentityUser>(_ctx));
 }
 public UnitOfWork(IDatabaseFactory dbFactory)
 {
     this.dbFactory = dbFactory;
     dataContext    = dbFactory.DataContext;
 }
        /*public override async Task ValidateClientAuthentication(OAuthValidateClientAuthenticationContext context)
         * {
         *  context.Validated();
         * }*/

        public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
        {
            context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" });
            //
            var identity = new ClaimsIdentity(context.Options.AuthenticationType);

            using (AuthenticationRepository _repo = new AuthenticationRepository())
            {
                IdentityUser user = await _repo.FindUser(context.UserName, context.Password);

                using (var db = new GatewayPCIPINContext())
                {
                    if (db != null)
                    {
                        var users = db.AspNetUsers.ToList();
                        //var roles = db.AspNetRoles.ToList();
                        //var users_roles = db.AspNetUserRoles.ToList();
                        var organizations = db.Organizations.ToList();

                        if (users != null && organizations != null && user != null)
                        {
                            if (!string.IsNullOrEmpty(users.Where(u => u.UserName == context.UserName && u.PasswordHash == context.Password).FirstOrDefault().UserName) && !string.IsNullOrEmpty(organizations.Where(o => o.OrganizationType.Id == organizme_type_merchant).FirstOrDefault().OrganizationType.Type))
                            {
                                //
                                identity.AddClaim(new Claim("sub", context.UserName));
                                identity.AddClaim(new Claim("role", "user_merchant"));
                                identity.AddClaim(new Claim(ClaimTypes.Role, "user_merchant"));
                                identity.AddClaim(new Claim(ClaimTypes.Name, context.UserName));
                                //

                                var props = new AuthenticationProperties(new Dictionary <string, string>
                                {
                                    {
                                        "userdisplayname", context.UserName
                                    },
                                    {
                                        "role", "user_merchant"
                                    }
                                });

                                var ticket = new AuthenticationTicket(identity, props);
                                context.Validated(ticket);
                            }
                        }
                        else
                        {
                            context.SetError("invalid_grant", "The user name or password is incorrect.");
                            return;
                        }
                    }
                }

                /*if (user == null)
                 * {
                 *  context.SetError("invalid_grant", "The user name or password is incorrect.");
                 *  return;
                 * }*/
            }

            /*var identity = new ClaimsIdentity(context.Options.AuthenticationType);
             * identity.AddClaim(new Claim("sub", context.UserName));
             * identity.AddClaim(new Claim("role", "user_merchant"));*/

            context.Validated(identity);
        }