public static void SingIn(IOwinContext owinContext, User user, ExternalLoginModel externalLogin)
 {
     owinContext.Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);
     var claimsMapper = new RegisteredExternal(user, externalLogin);
     var oAuthIdentity = CreateIdentity(claimsMapper, OAuthDefaults.AuthenticationType);
     var cookieIdentity = CreateIdentity(claimsMapper, CookieAuthenticationDefaults.AuthenticationType);
     var properties = CreateProperties(user);
     owinContext.Authentication.SignIn(properties, oAuthIdentity, cookieIdentity);
 }
 public static void SingIn(OAuthGrantResourceOwnerCredentialsContext context, User user)
 {
     ClaimsMapper claimsMapper = new RegisteredLocal(user);
     ClaimsIdentity oAuthIdentity = CreateIdentity(claimsMapper, context.Options.AuthenticationType);
     ClaimsIdentity cookiesIdentity = CreateIdentity(claimsMapper, CookieAuthenticationDefaults.AuthenticationType);
     AuthenticationProperties properties = CreateProperties(user);
     AuthenticationTicket ticket = new AuthenticationTicket(oAuthIdentity, properties);
     context.Validated(ticket);
     context.Request.Context.Authentication.SignIn(cookiesIdentity);
 }
 /// <summary>
 /// Custom properties that will be returned to the client with an access_token
 /// </summary>
 /// <param name="user">User base info</param>
 /// <returns>Properties</returns>
 public static AuthenticationProperties CreateProperties(User user)
 {
     IDictionary<string, string> data = new Dictionary<string, string>
     {
         { "email", user.Email },
         { "name", user.FullName ?? string.Empty },
         { "ava", UserProvider.GetAvatarUrl(user) ?? string.Empty }
     };
     return new AuthenticationProperties(data);
 }
 public RegisteredExternal(User user, ExternalLoginModel extLogin)
 {
     this.Id = user.Id.ToString();
     this.Email = user.Email;
     this.FullName = user.FullName ?? string.Empty;
     this.AvatarUrl = UserProvider.GetAvatarUrl(user);
     this.Sid = extLogin.ProviderKey;
     this.Version = this.GetVersion(user.TimeStamp);
     this.IsVerified = user.IsVerified.ToString();
     this.Issuer = ClaimsIdentity.DefaultIssuer;
     this.OriginalIssuer = extLogin.Provider.ToString();
 }
        public void SendDeleteConfirmationAsync(User user)
        {
            if (user == null)
                throw new ArgumentNullException("user");

            ViewData.Model = user;
            var mailMessage = Populate(x =>
            {
                x.Subject = Emails.DeleteConfirmation;
                x.ViewName = "DeleteConfirmation";
                x.To.Add(user.Email);
            });

            Task.Factory.StartNew(() => mailMessage.Send());
        }
 public Task DeleteUserWithDependenciesAsync(User user)
 {
     return this.UsersManager.DeleteUserWithDependenciesAsync(user.Id);
 }
 public static string GetAvatarUrl(User user)
 {
     return string.Format("/api/account/avatar/{0}?anticache={1}", user.Id, Environment.TickCount);
 }
 public static UserViewModel MapUserToViewModel(User user, ExternalLoginModel externalLogin)
 {
     return new UserViewModel
     {
         Email = user.Email,
         FullName = user.FullName,
         IsVerified = user.IsVerified,
         AvatarUrl = GetAvatarUrl(user),
         IsRegistered = true,
         LoginProvider = externalLogin.Provider.ToString()
     };
 }
 public static AccessToken CreateToken(IOwinContext owinContext, User user, ExternalLoginModel externalLogin)
 {
     var claimsMapper = new RegisteredExternal(user, externalLogin);
     return CreateToken(owinContext, user, claimsMapper);
 }
        private static AccessToken CreateToken(IOwinContext owinContext, User user, ClaimsMapper claimsMapper)
        {
            var identity = CreateIdentity(claimsMapper, OAuthDefaults.AuthenticationType);
            var ticket = new AuthenticationTicket(identity, CreateProperties(user));
            var context = new AuthenticationTokenCreateContext(owinContext,
                Startup.OAuthOptions.AccessTokenFormat,
                ticket);

            return new AccessToken
            {
                Type = OAuthDefaults.AuthenticationType,
                Value = context.SerializeTicket()
            };
        }