Пример #1
0
        protected IdentityRole GetIdentityRole(string userId)
        {
            if (string.IsNullOrEmpty(userId))
            {
                return(null);
            }

            if (roleDict == null)
            {
                roleDict = new Dictionary <string, IdentityRole>();
            }

            if (!roleDict.ContainsKey(userId))
            {
                var role = IdentityExtensions.GetIdentityRole(context, userId);
                if (role != null)
                {
                    roleDict.Add(userId, role);
                }
            }

            return(roleDict.ContainsKey(userId)
                ? roleDict[userId]
                : null);
        }
Пример #2
0
        public async Task <ActionResult <string> > Login([FromBody] LoginDTO model)
        {
            var appUser = await _userManager.FindByEmailAsync(model.Email);

            if (appUser == null)
            {
                _logger.LogInformation($"Web-Api login. User {model.Email} not found!");
                return(StatusCode(403));
            }

            var result = await _signInManager.CheckPasswordSignInAsync(appUser, model.Password, false);

            if (result.Succeeded)
            {
                var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(appUser); //get the User analog

                var jwt = IdentityExtensions.GenerateJWT(claimsPrincipal.Claims,
                                                         _configuration["JWT:SigningKey"],
                                                         _configuration["JWT:Issuer"],
                                                         _configuration.GetValue <int>("JWT:ExpirationInDays")
                                                         );
                _logger.LogInformation($"Token generated for user {model.Email}");
                return(Ok(new JwtResponseDTO()
                {
                    Token = jwt,
                    Status = "Logged in",
                    FirstName = appUser.FirstName,
                    LastName = appUser.LastName,
                    Roles = _userManager.GetRolesAsync(appUser)?.Result ?? new Collection <string>()
                }));
            }

            _logger.LogInformation($"Web-Api login. User {model.Email} attempted to log-in with bad password!");
            return(StatusCode(403));
        }
Пример #3
0
        protected ApplicationUser GetUser(string userId)
        {
            if (string.IsNullOrEmpty(userId))
            {
                return(null);
            }

            if (userDict == null)
            {
                userDict = new Dictionary <string, ApplicationUser>();
            }

            if (!userDict.ContainsKey(userId))
            {
                var user = IdentityExtensions.GetUser(context, userId);
                if (user != null)
                {
                    userDict.Add(userId, user);
                }
            }

            return(userDict.ContainsKey(userId)
                ? userDict[userId]
                : null);
        }
Пример #4
0
        public PartialViewResult ProfileInfo(string name = "xxxxx", int age = 12, bool married = false)
        {
            var m = new Service.UserService().getUserSelfProfile(IdentityExtensions.GetUserId(User.Identity));


            return(PartialView("PP/_profile", m));
        }
Пример #5
0
        public void PortraitUrl_Should_Return_Url_SpecificSize()
        {
            string characterId = "12345";

            EveImageHelper.CharacterAvatarSize size = EveImageHelper.CharacterAvatarSize.Thirty_Two;
            string expectedUrl = $"https://image.eveonline.com/Character/{characterId}_{(int)size}.jpg";

            var user = new ClaimsPrincipal(
                new ClaimsIdentity(
                    new Claim[] {
                new Claim("PrimaryCharacterId", characterId),
                new Claim(ClaimTypes.Name, "fakeusername")
            })
                );

            ApplicationUser expectedApplicationUser = new ApplicationUser()
            {
                PrimaryCharacterId = characterId,
                Id = "1"
            };

            Mock <UserManager <ApplicationUser> > mockUserManager = MockUserManager <ApplicationUser>();

            mockUserManager.Setup(x => x.GetUserAsync(user)).ReturnsAsync(expectedApplicationUser);

            string result = IdentityExtensions.AvatarUrl(user, mockUserManager.Object, size);

            Assert.AreEqual(expectedUrl, result);
        }
Пример #6
0
        public ActionResult OfferPage(String OfferID)
        {
            WorkWithOffers WWO       = new WorkWithOffers(Server);
            Offers         ShowOffer = new Offers();

            if (OfferID == null)
            {
                ShowOffer = (Offers)Session["ShowOffer"];
            }
            else
            {
                ShowOffer = WWO.GetOfferByID(OfferID);
            }
            Session["ShowOffer"] = ShowOffer;

            if (User.Identity.Name != "")
            {
                WorkWithUsers WWU = new WorkWithUsers();
                if (WWU.GetUserRole(IdentityExtensions.GetUserId(User.Identity)) == "Banned")
                {
                    return(RedirectToAction("UserBanned", "AccessDenied"));
                }
            }
            return(View(ShowOffer));
        }
Пример #7
0
        public async Task <IActionResult> Login([FromBody] LoginDTO dto)
        {
            var appUser = await _userManager.FindByEmailAsync(dto.Email);

            if (appUser == null)
            {
                _logger.LogInformation($"WebApi login. User {dto.Email} not found!");
                return(NotFound(new MessageDTO("User not found!")));
            }

            var result = await _signInManager.CheckPasswordSignInAsync(appUser, dto.Password, false);

            if (result.Succeeded)
            {
                var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(appUser);

                var jwt = IdentityExtensions.GenerateJWT(
                    claimsPrincipal.Claims
                    .Append(new Claim(ClaimTypes.GivenName, appUser.FirstName))
                    .Append(new Claim(ClaimTypes.Surname, appUser.LastName)),
                    _configuration["JWT:SigningKey"],
                    _configuration["JWT:Issuer"],
                    _configuration.GetValue <int>("JWT:ExpirationInDays")
                    );
                _logger.LogInformation($"WebApi login. User {appUser.Email} logged in.");
                return(Ok(new JwtResponseDTO()
                {
                    Token = jwt, Status = $"User {appUser.Email} logged in.", FirstName = appUser.FirstName,
                    LastName = appUser.LastName
                }));
            }

            _logger.LogInformation($"WebApi login. User {appUser.Email} failed login attempt!");
            return(NotFound(new MessageDTO("User not found!")));
        }
Пример #8
0
        public async Task <ActionResult <string> > Login([FromBody] LoginDTO model)
        {
            var appUser = await _userManager.FindByEmailAsync(model.Email);

            if (appUser == null)
            {
                _logger.LogInformation($"Web-Api login. User {model.Email} not Found!");
                return(StatusCode(403));
            }

            var result = await _signInManager.CheckPasswordSignInAsync(appUser, model.Password, false);

            if (result.Succeeded)
            {
                var claimPrincipal = await _signInManager.CreateUserPrincipalAsync(appUser);

                var jwt = IdentityExtensions.GenerateJWT(claimPrincipal.Claims,
                                                         _configuration["JWT:Key"],
                                                         _configuration["JWT:Issuer"],
                                                         _configuration.GetValue <int>("JWT:ExpireDays"));

                _logger.LogInformation($"Token generated for user {model.Email}");
                var isAdministrator = _userManager.IsInRoleAsync(appUser, "Admin").Result;
                return(Ok(new { token = jwt, isAdmin = isAdministrator }));
            }

            _logger.LogInformation($"Web-Api login. User {model.Email} bad log-in password!");
            return(StatusCode(403));
        }
        public async Task <ActionResult <string> > ChangeEmail([FromBody] ChangeEmailDTO model)
        {
            var user = await _userManager.FindByEmailAsync(model.Email);

            Console.WriteLine(user.ToString());
            if (user == null)
            {
                _logger.LogInformation("User not found!");
                return(StatusCode(403));
            }
            var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(user); //get the User analog

            var jwt = IdentityExtensions.GenerateJWT(claimsPrincipal.Claims,
                                                     _configuration["JWT:SigningKey"],
                                                     _configuration["JWT:Issuer"],
                                                     _configuration.GetValue <int>("JWT:ExpirationInDays")
                                                     );

            var email = await _userManager.GetEmailAsync(user);

            if (model.NewEmail != email)
            {
                var code = await _userManager.GenerateChangeEmailTokenAsync(user, model.NewEmail);

                await _userManager.ChangeEmailAsync(user, model.NewEmail, code);

                await _userManager.SetUserNameAsync(user, model.NewEmail);

                _logger.LogInformation("Token generated for user");
                return(Ok(new { token = jwt, status = "Email changed", email = model.NewEmail }));
            }

            return(Ok(new { token = jwt, status = "Email was not changed", email = model.Email }));
        }
        public async Task <ActionResult <string> > Login([FromBody] Login dto)
        {
            var appUser = await _userManager.FindByNameAsync(dto.UserName);

            if (appUser == null)
            {
                _logger.LogInformation($"Web-api login. User with User name {dto.UserName} not found");
                return(StatusCode(403));
            }

            var result = await _signInManager.CheckPasswordSignInAsync(appUser, dto.Password, false);

            if (result.Succeeded)
            {
                var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(appUser);

                var jwt = IdentityExtensions.GenerateJWT(
                    claimsPrincipal.Claims,
                    _configuration.GetSection("JWT").GetValue <string>("SigningKey"),
                    _configuration.GetSection("JWT").GetValue <string>("Issuer"),
                    _configuration.GetSection("JWT").GetValue <int>("ExpireInDays")
                    );
                _logger.LogInformation($@"Token generated for user {dto.UserName}");
                return(Ok(new LoginResponse
                {
                    Token = jwt,
                    Status = "Logged in",
                    HasActiveRoutine = await _bll.WorkoutRoutines.UserWithIdHasActiveRoutineAsync(appUser.Id)
                }));
            }

            _logger.LogInformation("Web-api login. Login attempt with incorrect password.");
            return(StatusCode(403));
        }
        public ActionResult RemoveAccountList()
        {
            var linkedAccounts = this.UserManager.GetLogins(IdentityExtensions.GetUserId <int>(this.User.Identity));

            this.ViewBag.ShowRemoveButton = this.HasPassword() || linkedAccounts.Count > 1;
            return(this.PartialView(linkedAccounts));
        }
Пример #12
0
        public async Task <ActionResult <string> > Login([FromBody] LoginDTO model)
        {
            var appUser = await _userManager.FindByEmailAsync(model.Email);

            if (appUser is null)
            {
                _logger.LogInformation($"Web-Api login. User {model.Email} not found!");
                return(StatusCode(403));
            }

            var result = await _signInManager.CheckPasswordSignInAsync(appUser, model.Password, false);

            if (result.Succeeded)
            {
                var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(appUser); //get the User analog

                var jwt = IdentityExtensions.GenerateJWT(claimsPrincipal.Claims
                                                         .Append(new Claim(ClaimTypes.GivenName, appUser.FirstName))
                                                         .Append(new Claim(ClaimTypes.Surname, appUser.LastName)),
                                                         _configuration["JWT:SigningKey"],
                                                         _configuration["JWT:Issuer"],
                                                         _configuration.GetValue <int>("JWT:ExpirationInDays")
                                                         );
                _logger.LogInformation($"Token generated for user {model.Email} ");
                return(Ok(new { token = jwt }));
            }

            _logger.LogInformation($"Web-Api login. User {model.Email} attempted to log-in with bad password!");
            return(StatusCode(403));
        }
Пример #13
0
        public async Task <ActionResult <string> > Register([FromBody] RegisterDTO model)
        {
            var appUser = new AppUser()
            {
                UserName = model.Email,
                Email    = model.Email,
                Name     = model.Name
            };
            var result = await _userManager.CreateAsync(appUser, model.Password);

            if (result.Succeeded)
            {
                var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(appUser); //get the User analog

                var jwt = IdentityExtensions.GenerateJWT(claimsPrincipal.Claims,
                                                         _configuration["JWT:SigningKey"],
                                                         _configuration["JWT:Issuer"],
                                                         _configuration.GetValue <int>("JWT:ExpirationInDays")
                                                         );

                return(Ok(new { token = jwt, status = "Registered and logged-in" }));
            }

            return(StatusCode(500));
        }
Пример #14
0
            public static ExternalLoginData FromIdentity(ClaimsIdentity identity)
            {
                if (identity == null)
                {
                    return(null);
                }

                Claim providerKeyClaim = identity.FindFirst(ClaimTypes.NameIdentifier);

                if (providerKeyClaim == null || String.IsNullOrEmpty(providerKeyClaim.Issuer) ||
                    String.IsNullOrEmpty(providerKeyClaim.Value))
                {
                    return(null);
                }

                if (providerKeyClaim.Issuer == ClaimsIdentity.DefaultIssuer)
                {
                    return(null);
                }

                return(new ExternalLoginData
                {
                    LoginProvider = providerKeyClaim.Issuer,
                    ProviderKey = providerKeyClaim.Value,
                    UserName = IdentityExtensions.FindFirstValue(identity, ClaimTypes.Name)
                });
            }
Пример #15
0
        public async Task <IHttpActionResult> RemoveLogin(RemoveLoginBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            IdentityResult result;

            if (model.LoginProvider == LocalLoginProvider)
            {
                result = await UserManager.RemovePasswordAsync(IdentityExtensions.GetUserId <Int32>(User.Identity));
            }
            else
            {
                result = await UserManager.RemoveLoginAsync(IdentityExtensions.GetUserId <Int32>(User.Identity),
                                                            new UserLoginInfo(model.LoginProvider, model.ProviderKey));
            }

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }
Пример #16
0
        public async Task <IHttpActionResult> AddExternalLogin(AddExternalLoginBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            Authentication.SignOut(DefaultAuthenticationTypes.ExternalCookie);

            AuthenticationTicket ticket = AccessTokenFormat.Unprotect(model.ExternalAccessToken);

            if (ticket == null || ticket.Identity == null || (ticket.Properties != null &&
                                                              ticket.Properties.ExpiresUtc.HasValue &&
                                                              ticket.Properties.ExpiresUtc.Value < DateTimeOffset.UtcNow))
            {
                return(BadRequest("External login failure."));
            }

            ExternalLoginData externalData = ExternalLoginData.FromIdentity(ticket.Identity);

            if (externalData == null)
            {
                return(BadRequest("The external login is already associated with an account."));
            }

            IdentityResult result = await UserManager.AddLoginAsync(IdentityExtensions.GetUserId <Int32>(User.Identity),
                                                                    new UserLoginInfo(externalData.LoginProvider, externalData.ProviderKey));

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }
Пример #17
0
        public async Task <HttpResponseMessage> Upload()
        {
            UploadApp updApp = new UploadApp();

            if (!Request.Content.IsMimeMultipartContent())
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, "Ошибка при загрузке файла"));
            }

            updApp.App = new Application();
            updApp.GetProvider();



            await Request.Content.ReadAsMultipartAsync(updApp.Provider);

            await updApp.ReadFileAsync();

            List <Error> errors = await updApp.ValidateAsync();

            //Валидация

            foreach (Error error in errors)
            {
                ModelState.AddModelError(error.Name, error.Text);
            }


            updApp.App.ApplicationUserId = IdentityExtensions.GetUserId(User.Identity);
            updApp.App.Date = DateTime.Now.ToString("dd MMMM yyyy | HH:mm:ss");
            //updApp.App.Id = Guid.NewGuid().ToString();


            ApplicationUserManager userManager = Request.GetOwinContext().GetUserManager <ApplicationUserManager>();

            // если не админ то подтверждение нужно
            if (!userManager.IsInRole(IdentityExtensions.GetUserId(User.Identity), "Admin"))
            {
                updApp.App.Hide = true;
            }
            updApp.App.Delete   = false;
            updApp.App.Path     = updApp.Path;
            updApp.App.PathIcon = updApp.PathIcon;



            if (!ModelState.IsValid) //валидация
            {
                return(Request.CreateResponse(HttpStatusCode.BadRequest, ModelState));
            }
            _db.Applications.Add(updApp.App);

            _db.SaveChanges();



            return(Request.CreateResponse(HttpStatusCode.Created, updApp.App));
        }
Пример #18
0
        private void RegisterServicesForIdentity(IServiceCollection services, DatabaseOptions databaseOptions)
        {
            if (databaseOptions.ConnectionType == ConnectionType.MongoDB)
            {
                services.AddTransient(a => new MongoConnection(databaseOptions));
            }

            IdentityExtensions.RegisterRepos(services, databaseOptions, true);
        }
Пример #19
0
        public async Task <IActionResult> Register([FromBody] RegisterDTO dto)
        {
            var appUser = await _userManager.FindByEmailAsync(dto.Email);

            if (appUser != null)
            {
                _logger.LogInformation($"WebApi register. User {dto.Email} already registered!");
                return(NotFound(new MessageDTO("User already registered!")));
            }

            appUser = new Domain.App.Identity.AppUser()
            {
                Email     = dto.Email,
                UserName  = dto.Email,
                FirstName = dto.FirstName,
                LastName  = dto.LastName,
            };
            var result = await _userManager.CreateAsync(appUser, dto.Password);

            if (result.Succeeded)
            {
                _logger.LogInformation($"User {appUser.Email} created a new account with password.");

                var user = await _userManager.FindByEmailAsync(appUser.Email);

                if (user != null)
                {
                    var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(user);

                    var jwt = IdentityExtensions.GenerateJWT(
                        claimsPrincipal.Claims
                        .Append(new Claim(ClaimTypes.GivenName, appUser.FirstName))
                        .Append(new Claim(ClaimTypes.Surname, appUser.LastName)),
                        _configuration["JWT:SigningKey"],
                        _configuration["JWT:Issuer"],
                        _configuration.GetValue <int>("JWT:ExpirationInDays")
                        );
                    _logger.LogInformation($"WebApi register. User {user.Email} logged in.");
                    return(Ok(new JwtResponseDTO()
                    {
                        Token = jwt, Status = $"User {user.Email} created and logged in.",
                        FirstName = appUser.FirstName, LastName = appUser.LastName
                    }));
                }

                _logger.LogInformation($"User {appUser.Email} not found after creation!");
                return(BadRequest(new MessageDTO("User not found after creation!")));
            }

            var errors = result.Errors.Select(error => error.Description).ToList();

            return(BadRequest(new MessageDTO()
            {
                Messages = errors
            }));
        }
        private bool HasPassword()
        {
            var user = this.UserManager.FindById(IdentityExtensions.GetUserId <int>(this.User.Identity));

            if (user != null)
            {
                return(!user.PasswordHash.IsNullOrWhiteSpace());
            }
            return(false);
        }
Пример #21
0
        public ActionResult History()
        {
            ViewBag.Title = "User History";

            var ID          = IdentityExtensions.GetUserId(HttpContext.User.Identity);
            var UserBeeInfo = context.UserBees.Where(u => u.UserID == ID.ToString());

            var beelist = CreateHistoryDisplay(UserBeeInfo.ToList());

            return(View(beelist));
        }
Пример #22
0
        //public ActionResult Create()
        //{
        //    return View();
        //}

        public ActionResult CreateUserBee(TempBeeBuilder BeeBuilder)
        {
            var userbee = new UserBees();

            var ID = IdentityExtensions.GetUserId(HttpContext.User.Identity);

            userbee.BeeID    = BeeBuilder.BeeID;
            userbee.Location = BeeBuilder.Location;
            userbee.UserID   = ID;

            return(View());
        }
Пример #23
0
        private async Task <string> CreateJwtTokenForUser(AppUser user)
        {
            var claimsPrincipal = await _signInManager.CreateUserPrincipalAsync(user); //get the User analog

            var jwt = IdentityExtensions.GenerateJwt(claimsPrincipal.Claims,
                                                     _configuration["JWT:SigningKey"],
                                                     _configuration["JWT:Issuer"],
                                                     _configuration.GetValue <int>("JWT:ExpirationInDays")
                                                     );

            return(jwt);
        }
Пример #24
0
 public static String GetUserName()
 {
     if (HttpContext.Current.Session["UserName"] != null)
     {
         return(Convert.ToString(HttpContext.Current.Session["UserName"]));
     }
     else
     {
         var identity = HttpContext.Current.User.Identity;
         HttpContext.Current.Session.Add("UserName", IdentityExtensions.GetUserName(identity));
         return(Convert.ToString(HttpContext.Current.Session["UserName"]));
     }
 }
        public static string GetName(this IIdentity identity)
        {
            if (identity == null)
            {
                throw new ArgumentNullException("identity");
            }
            ClaimsIdentity identity1 = identity as ClaimsIdentity;

            if (identity1 != null)
            {
                return(IdentityExtensions.FindFirstValue(identity1, "Name"));
                //return IdentityExtensions.FindFirstValue(identity1, "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name");
            }
            return((string)null);
        }
Пример #26
0
        /// <summary>
        /// Returns Group SID (OrganizationID)
        /// </summary>
        /// <param name="identity">IIdentity</param>
        /// <returns>Group Sid</returns>
        public static Guid GetUserGroupId(this IIdentity identity)
        {
            string temp = string.Empty;

            if (identity == null)
            {
                throw new ArgumentNullException("identity");
            }
            ClaimsIdentity identity1 = identity as ClaimsIdentity;

            if (identity1 != null)
            {
                temp = IdentityExtensions.FindFirstValue(identity1, ClaimTypes.GroupSid);
            }
            return(new Guid(temp));
        }
Пример #27
0
        public async Task <IHttpActionResult> SetPassword(SetPasswordBindingModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            IdentityResult result = await UserManager.AddPasswordAsync(IdentityExtensions.GetUserId <Int32>(User.Identity), model.NewPassword);

            if (!result.Succeeded)
            {
                return(GetErrorResult(result));
            }

            return(Ok());
        }
Пример #28
0
 public IHttpActionResult GetAllSalesPersons()
 {
     try
     {
         string Email = string.Empty;
         if (User.IsInRole(EnumTypes.RoleList.SALESPERSON.ToString()))
         {
             Email = IdentityExtensions.GetEmailAdress(User.Identity);
         }
         var users = _ISalesPerson_Repository.GetSalesPersons(Email);
         return(Ok(users));
     }
     catch (Exception ex)
     {
         return(NotFound());
     }
 }
Пример #29
0
 public static int GetUserId()
 {
     if (HttpContext.Current.Session == null)
     {
         var identity = HttpContext.Current.User.Identity;
         return(Convert.ToInt32(IdentityExtensions.GetUserId(identity)));
     }
     else if (HttpContext.Current.Session["UserId"] != null)
     {
         return(Convert.ToInt32(HttpContext.Current.Session["UserId"]));
     }
     else
     {
         var identity = HttpContext.Current.User.Identity;
         HttpContext.Current.Session.Add("UserId", IdentityExtensions.GetUserId(identity));
         return(Convert.ToInt32(HttpContext.Current.Session["UserId"]));
     }
 }
        // GET: evaluations
        public ActionResult Index()
        {
            var evaluations = db.evaluations.Include(e => e.course).Include(e => e.student);

            if (User.IsInRole("Instructor"))
            {
                var sid = int.Parse(IdentityExtensions.GetSchoolId(User.Identity));
                var instructorCourses = db.courses.Where(c => c.instructorid == sid);
                var ctitles           = instructorCourses.AsEnumerable().Select(t => t.title);
                evaluations = from e in evaluations where ctitles.Contains(e.coursetitle) select e;
            }
            else if (User.IsInRole("Student"))
            {
                var sid = int.Parse(IdentityExtensions.GetSchoolId(User.Identity));
                evaluations = from e in evaluations where e.studentid == sid select e;
            }
            return(View(evaluations.ToList()));
        }