Ejemplo n.º 1
0
        /// <summary>
        /// Creates a new refesh token.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns><see cref="Task"/></returns>
        public override async Task CreateAsync(AuthenticationTokenCreateContext context)
        {
            var ticket = context.Ticket;

            var clientId = ticket.Properties.Dictionary[".client_id"];

            if (string.IsNullOrEmpty(clientId))
            {
                return;
            }

            var refreshTokenId = IdentityUtil.NewId(2);

            var refreshTokenLifeTime = context.OwinContext.Get <string>(OwinKeys.ClientRefreshTokenLifeTime);

            var token = CreateRefreshToken(ticket, refreshTokenId, clientId, Convert.ToDouble(refreshTokenLifeTime));

            token.ProtectedTicket = context.SerializeTicket();

            var identityStore = GetIdentityStore();

            var result = await identityStore.AddRefreshToken(token);

            if (result)
            {
                context.SetToken(refreshTokenId);
            }
        }
Ejemplo n.º 2
0
        protected override IEnumerable <INotification> CreateNotifications(IVssRequestContext requestContext, TFVC.CheckinNotification checkin, int maxLines)
        {
            var locationService = requestContext.GetService <ILocationService>();

            string baseUrl = String.Format("{0}/{1}/",
                                           locationService.GetAccessMapping(requestContext, "PublicAccessMapping").AccessPoint,
                                           requestContext.ServiceHost.Name);

            var teamNames = new HashSet <string>();
            var projects  = new Dictionary <string, string>();

            var submittedItems = checkin.GetSubmittedItems(requestContext).ToList();

            const string pattern = @"^\$\/([^\/]*)\/";

            foreach (string item in submittedItems)
            {
                Match match = Regex.Match(item, pattern);
                if (match.Success)
                {
                    string projectName = match.Groups[1].Value;
                    if (projects.ContainsKey(projectName))
                    {
                        continue;
                    }

                    string projectUrl = baseUrl + projectName;
                    projects.Add(projectName, projectUrl);

                    foreach (var team in GetUserTeamsByProjectName(requestContext, projectName, checkin.ChangesetOwner.Descriptor))
                    {
                        teamNames.Add(team);
                    }
                }
            }

            var notification = new CheckinNotification()
            {
                TeamProjectCollection = requestContext.ServiceHost.Name,
                UniqueName            = IdentityUtil.Convert(checkin.ChangesetOwner).UniqueName,
                DisplayName           = checkin.ChangesetOwner.DisplayName,
                ChangesetUrl          = $"{baseUrl}_versionControl/changeset/{checkin.Changeset}",
                ChangesetId           = checkin.Changeset,
                Projects       = projects,
                Comment        = TextHelper.Truncate(checkin.Comment, Settings.CommentMaxLength, true),
                TeamNames      = teamNames,
                SubmittedItems = submittedItems
            };

            yield return(notification);
        }
Ejemplo n.º 3
0
        protected override Task <HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
        {
            Model.Usuario user = null;

            if (AuthorizationUtil.IsValid(request.Headers.Authorization, out user))
            {
                var roles     = IdentityUtil.GetRoles(user);
                var principal = new GenericPrincipal(new GenericIdentity(user.Nome), roles);

                CurrentPrincipalUtil.SetPrincipal(principal);
            }

            return(base.SendAsync(request, cancellationToken));
        }
Ejemplo n.º 4
0
        public async Task <IActionResult> Authenticate([FromBody] LoginViewModel model)
        {
            string          token = "";
            ApplicationUser user  = await _userManager.FindByEmailAsync(model.email);

            if ((user != null))
            {
                if (user.EmailConfirmed == true)
                {
                    var result = await _signInManager.PasswordSignInAsync(model.email, model.password, model.RememberMe, lockoutOnFailure : false);

                    if (result.Succeeded)
                    {
                        token = IdentityUtil.generateJwtToken(user, _appSettings.Secret);

                        var authenticationResultDto = new AuthenticationResultDTO
                        {
                            Status          = "success",
                            ResponseCode    = "00",
                            ResponseMessage = "User Authenticated",
                            Email           = model.email,
                            Token           = token
                        };

                        return(Ok(authenticationResultDto));
                    }
                    else
                    {
                        var authenticationResultDto = new AuthenticationResultDTO
                        {
                            Status          = "failed",
                            ResponseCode    = "01",
                            ResponseMessage = "Invalid Credential",
                            Email           = model.email,
                            Token           = null
                        };

                        return(BadRequest(authenticationResultDto));
                    }
                }
            }
            var data = new
            {
                status = "fail, user does not exist",
                user   = "",
                token  = ""
            };

            return(new JsonResult(data));
        }
Ejemplo n.º 5
0
        private HttpResponseMessage RunRulesPost()
        {
            var    value     = Request.Content.ReadAsStringAsync().Result;
            var    startTime = DateTime.Now;
            string json;
            var    errorMessages = new List <ExpandoObject>();
            var    destDataRows  = new List <ExpandoObject>();

            if (Request.Content.Headers.ContentType.ToString().ToLower() == "application/json")
            {
                json  = value;
                value = null;
            }
            else
            {
                var httpResponseMessage = new HttpResponseMessage(HttpStatusCode.BadRequest)
                {
                    ReasonPhrase = "This API accepts Content-Type [application/json] only."
                };
                throw new HttpResponseException(httpResponseMessage);
            }

            var activeRuleSets = RuleInstantiations.ParseRuleSets(ref json);
            var count          = GetRuleCount(activeRuleSets);
            var ruleList       = new RuleList {
                RuleSets = activeRuleSets
            };
            var propertyObject = RuleInstantiations.ParseDataSet(ref json);

            json = null;
            IdentityUtil.AddIdentities(ref propertyObject);
            destDataRows = IterateGeneralRules(ref propertyObject, ruleList, ref destDataRows, ref errorMessages);
            destDataRows = IterateErrorCheckRules(ref destDataRows, ruleList, ref errorMessages);
            IdentityUtil.RemoveIdentities(ref destDataRows);
            var parsed   = BuildResponse(ref errorMessages, ref destDataRows);
            var response = Request.CreateResponse(HttpStatusCode.OK);

            var endTime = DateTime.Now;
            var diff    = endTime - startTime;

            response.Content = new StringContent(parsed.ToString(), Encoding.UTF8, "application/json");
            AddHeaders(response, diff, ref propertyObject, ref destDataRows, count);

            Debug.WriteLine("End of call to " + this.GetType().Name + ". " +
                            System.Reflection.MethodBase.GetCurrentMethod().Name + ".");

            return(response);
        }
Ejemplo n.º 6
0
        /// <summary>
        /// Receives the Refresh Token from the "refresh_token" grant.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <returns><see cref="Task"/></returns>
        public override async Task ReceiveAsync(AuthenticationTokenReceiveContext context)
        {
            var owinContext = context.OwinContext;

            var allowedOrigin = owinContext.Get <string>(OwinKeys.ClientAllowedOrigin) ?? "*";

            owinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { allowedOrigin });

            var hashedTokenId = IdentityUtil.ComputeHash(context.Token);

            var identityStore = GetIdentityStore();

            var refreshToken = await identityStore.FindRefreshToken(hashedTokenId);

            if (refreshToken != null)
            {
                context.DeserializeTicket(refreshToken.ProtectedTicket);

                await identityStore.RemoveRefreshToken(hashedTokenId);
            }
        }
Ejemplo n.º 7
0
        private static RefreshToken CreateRefreshToken([NotNull] AuthenticationTicket ticket, [NotNull] string refreshTokenId, [NotNull] string clientId, double expiresInMinutes)
        {
            Contract.Requires(!string.IsNullOrEmpty(refreshTokenId));
            Contract.Requires(!string.IsNullOrEmpty(clientId));

            var token = new RefreshToken
            {
                Id         = IdentityUtil.ComputeHash(refreshTokenId),
                ClientId   = clientId,
                Subject    = ticket.Identity.Name,
                IssuedUtc  = DateTime.UtcNow,
                ExpiresUtc = DateTime.UtcNow.AddMinutes(expiresInMinutes)
            };

            var props = ticket.Properties;

            props.IssuedUtc  = token.IssuedUtc;
            props.ExpiresUtc = token.ExpiresUtc;

            return(token);
        }
Ejemplo n.º 8
0
        public async Task <LoginResultDTO> LoginAsync(string email, string password, bool rememberMe)
        {
            string token = "";

            ApplicationUser user = await _userManager.FindByEmailAsync(email);

            if (user != null)
            {
                var result = await _signInManager.PasswordSignInAsync(email, password, rememberMe, lockoutOnFailure : false);

                if (result.Succeeded)
                {
                    string secret = _appSettings.Secret;
                    token = IdentityUtil.generateJwtToken(user, secret);

                    UserSignInResultDTO customerResult = new UserSignInResultDTO
                    {
                        firstname = user.FirstName,
                        lastname  = user.LastName,
                        email     = user.Email,
                        phone     = user.PhoneNumber,
                        token     = token
                    };

                    LoginResultDTO loginResultDTO = new LoginResultDTO
                    {
                        Status           = "success",
                        ResponseCode     = "00",
                        ResponseMessage  = "Sign in Successfully",
                        UserSignInResult = customerResult,
                        ErrorList        = null
                    };

                    return(loginResultDTO);
                }
                else
                {
                    LoginResultDTO loginResultDTO = new LoginResultDTO
                    {
                        Status           = "fail",
                        ResponseCode     = "01",
                        ResponseMessage  = "Invalid Credentials",
                        UserSignInResult = null,
                        ErrorList        = null
                    };

                    return(loginResultDTO);
                }
            }
            else
            {
                LoginResultDTO loginResultDTO = new LoginResultDTO
                {
                    Status           = "fail",
                    ResponseCode     = "01",
                    ResponseMessage  = "User does not exist",
                    UserSignInResult = null,
                    ErrorList        = null
                };

                return(loginResultDTO);
            }
        }
Ejemplo n.º 9
0
        public async Task <RegistrationResultDTO> RegisterAsync(
            string email, string password, bool rememberMe, string lastname, string firstname, string phonenumber)
        {
            var isAccountExisting = await this.VerifyAccountExist(email);

            if (isAccountExisting)
            {
                RegistrationResultDTO registrationResultDTO = new RegistrationResultDTO
                {
                    Status           = "fail",
                    ResponseCode     = "01",
                    ResponseMessage  = "User registration failed. User already exists",
                    UserSignInResult = null,
                    ErrorList        = null
                };

                return(registrationResultDTO);
            }

            ApplicationUser user = new ApplicationUser();

            user.UserName       = email;
            user.Email          = email;
            user.FirstName      = firstname;
            user.LastName       = lastname;
            user.EmailConfirmed = true;
            user.PhoneNumber    = phonenumber;
            IdentityResult result = _userManager.CreateAsync(user, password).Result;

            if (result.Succeeded)
            {
                UserSignInResultDTO userSignInResult = new UserSignInResultDTO
                {
                    firstname = firstname,
                    lastname  = lastname,
                    email     = email,
                    phone     = phonenumber
                };

                _userManager.AddToRoleAsync(user, "Customer").Wait();

                var signInResult = await _signInManager.PasswordSignInAsync(email, password, rememberMe, lockoutOnFailure : false);

                if (signInResult.Succeeded)
                {
                    string secret = _appSettings.Secret;
                    string token  = IdentityUtil.generateJwtToken(user, secret);

                    userSignInResult.token = token;

                    RegistrationResultDTO registrationResultDTO = new RegistrationResultDTO
                    {
                        Status           = "success",
                        ResponseCode     = "00",
                        ResponseMessage  = "User registered successfully",
                        UserSignInResult = userSignInResult,
                        ErrorList        = null
                    };

                    return(registrationResultDTO);
                }
                else
                {
                    RegistrationResultDTO registrationResultDTO = new RegistrationResultDTO
                    {
                        Status           = "success",
                        ResponseCode     = "00",
                        ResponseMessage  = "User Registration Successful. Login to retrieve token",
                        UserSignInResult = userSignInResult,
                        ErrorList        = null
                    };

                    return(registrationResultDTO);
                }
            }
            else
            {
                RegistrationResultDTO registrationResultDTO = new RegistrationResultDTO
                {
                    Status           = "fail",
                    ResponseCode     = "01",
                    ResponseMessage  = "User Registration Failed. Please try again later",
                    UserSignInResult = null,
                    ErrorList        = null
                };

                return(registrationResultDTO);
            }
        }