예제 #1
0
        public override async Task Handle()
        {
            if (Request.Headers["Authorization"] != null)
            {
                Guid token = Guid.Parse(Request.Headers["Authorization"]);
                CurrentUser = manager.AuthorizeUser(token);
            }

            string requestJson;

            using (var textReader = new StreamReader(Request.InputStream, Request.ContentEncoding))
            {
                requestJson = await textReader.ReadToEndAsync().ConfigureAwait(false);
            }
            TRequestData requestData = JsonConvert.DeserializeObject <TRequestData>(requestJson);

            TResponseData responseData = await Handle(requestData).ConfigureAwait(false);

            var responseJson = JsonConvert.SerializeObject(responseData);

            Response.StatusCode = 200;
            Response.Headers.Add(HttpResponseHeader.ContentType, "application/json");

            byte[] buffer = Encoding.UTF8.GetBytes(responseJson);
            Response.ContentLength64 = buffer.Length;
            Response.OutputStream.Write(buffer, 0, buffer.Length);
        }
예제 #2
0
 public override void OnActionExecuting(HttpActionContext actionContext)
 {
     if (actionContext.ActionDescriptor.GetCustomAttributes <AllowAnonymousAttribute>().Any())
     {
         base.OnActionExecuting(actionContext);
     }
     else
     {
         var user = AuthorizedUser.Current.User;
         if (user == null)
         {
             //未验证(登录)的用户, 而且是非匿名访问,则转向登录页面
             //HttpContext.Current.Response.Redirect("~/Account/Login", true);
             actionContext.Response =
                 actionContext.Request.CreateErrorResponse(HttpStatusCode.Unauthorized, new HttpError("用户未登录"));
             AuthorizedUser.LoginOut();
             return;
         }
         else
         {
             //没有配置权限策略
             base.OnActionExecuting(actionContext);
         }
     }
 }
예제 #3
0
        public void Setup()
        {
            token = new JwtSecurityToken();
            generateTokensServiceMock = new Mock <IGenerateSecurityTokens>();
            generateTokensServiceMock
            .Setup(a => a.GenerateSecurityToken(
                       It.IsAny <Claim[]>(),
                       It.IsAny <JwtSettings>(),
                       It.IsAny <DateTime>()))
            .Returns(() => token);
            generateTokensServiceMock
            .Setup(a => a.WriteToken(It.IsAny <JwtSecurityToken>()))
            .Returns(() => writtenToken);
            settings = new WebApiSettings()
            {
                JwtSettings = new JwtSettings()
            };

            _service = new TokenResponseService(
                generateTokensServiceMock.Object,
                Mock.Of <ILogger <TokenResponseService> >(),
                settings);

            user = new AuthorizedUser(new User())
            {
                Name = "Name",
                Role = "Role"
            };
        }
예제 #4
0
        public async Task <ActionResult> DeleteUser(string userId)
        {
            string         currentUserId = User.Identity.GetUserId();
            string         returnUrl     = Request.UrlReferrer.AbsolutePath + Request.UrlReferrer.Query;
            AuthorizedUser user          = await UserManager.FindByIdAsync(userId);

            AuthorizedUser curUser = await UserManager.FindByIdAsync(currentUserId);

            bool isCurUserAdmin = curUser.IsAdmin;
            var  userLogins     = await UserManager.GetLoginsAsync(userId);

            // Check if current user is not admin
            // user has no rights to delete users
            // or if current user tries to delete himself
            if (!isCurUserAdmin || userId == currentUserId)
            {
                return(RedirectToAction("Index", "Home"));
            }

            foreach (var login in userLogins)
            {
                if (RemoveLogins(userId, login.LoginProvider, login.ProviderKey))
                {
                    return(Redirect(returnUrl));
                }
            }

            helper.DeleteUser(userId);

            return(Redirect(returnUrl));
        }
예제 #5
0
        public async Task <IHttpActionResult> Suggestion([FromBody] AuthorizedUser authorizedUser)
        {
            this.authenticateUser(authorizedUser);
            UserAccount retrievedUser = await authorizedUser.getUserAccount(db).ConfigureAwait(false);

            await retrievedUser.Login().ConfigureAwait(false);

            TilerUser tilerUser = retrievedUser.getTilerUser();

            tilerUser.updateTimeZoneTimeSpan(authorizedUser.getTimeSpan);
            if (retrievedUser.Status)
            {
                DateTimeOffset nowTime = authorizedUser.getRefNow();
                if (retrievedUser.ScheduleLogControl.Now == null)
                {
                    var         retrievalOption = DataRetrievalSet.analysisManipulation;
                    DB_Schedule schedule        = new DB_Schedule(retrievedUser, nowTime, authorizedUser.getCurrentLocation(), retrievalOptions: retrievalOption);
                    retrievedUser.ScheduleLogControl.Now = schedule.Now;
                }

                await SuggestionAnalysis(retrievedUser.ScheduleLogControl, authorizedUser.getCurrentLocation()).ConfigureAwait(false);
            }

            var retValue = new PostBackData("", 0);

            return(Ok(retValue.getPostBack));
        }
        public async Task <ActionResult> Register(RegisterViewModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new AuthorizedUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    //associate
                    _policyService.AssociateExistingDevices(user.Id);
                    await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                    // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771
                    // Send an email with this link
                    // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
                    // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
                    // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>");

                    return(RedirectToAction("Index", "Home"));
                }
                AddErrors(result);
            }

            // If we got this far, something failed, redisplay form
            return(View(model));
        }
예제 #7
0
        /// <summary>
        /// Get all the videos by specific user
        /// </summary>
        /// <param name="userId">User's id</param>
        /// <returns>Collection of videos by specific user</returns>
        public IEnumerable <Video> GetVideos(string userId)
        {
            AuthorizedUser user   = GetUsers(userId);
            var            videos = GetVideos().Where(s => s.Author == user).ToList();

            return(videos.OrderByDescending(s => s.PublishDate).ToList());
        }
        private void Notification()
        {
            IdentityMessage toSend = new IdentityMessage();

            while (true)
            {
                Thread.Sleep(300000);
                DateTime     now    = DateTime.Now;
                DateTime     start  = now.AddMinutes(25);
                DateTime     end    = now.AddMinutes(30);
                List <Order> Orders = db.Orders.Where(x => x.CompletionDateTime >= start && x.CompletionDateTime <= end).ToList();
                foreach (var order in Orders)
                {
                    foreach (var join in order.Joinings)
                    {
                        if (join.User.GetType().BaseType.Name == typeof(AuthorizedUser).Name)
                        {
                            AuthorizedUser user = (AuthorizedUser)join.User;
                            toSend.Destination = user.AppUser.Email;
                            toSend.Body        = textOfNotification;
                            toSend.Subject     = subjectOfNotification;

                            eServise.Send(toSend);
                        }
                    }
                }
            }
        }
예제 #9
0
        /// <summary>
        /// Creates a card for the authorized user using AddCard behavior call. Then sets the authorized user's card number in LMS.
        /// </summary>
        /// <param name="strategy"></param>
        /// <param name="authorizedUser"></param>
        /// <returns></returns>
        public BaseResult AddCard(ClientStrategy strategy, AuthorizedUser authorizedUser)
        {
            var result    = new BaseResult();
            var lmsPerson = new LmsPerson()
            {
                AuthorizedUser = authorizedUser
            };
            string cardNumber = string.Empty;

            var addCardResult = strategy.AddCard(lmsPerson, out cardNumber);

            result.AppendResult(addCardResult);

            if (addCardResult.Result)
            {
                //Store the CCM AccountNumber received from the response to the authorized user CardNumber field
                var authUser = _app.AuthorizedUsers.SingleOrDefault(a => a.AuthorizedUserId == authorizedUser.AuthorizedUserId);
                authUser.CardNumber = cardNumber;
            }
            else
            {
                result.AddMessage(MessageType.Warning, $"An error occured creating the plastic card. The card will not be created on CCM for {authorizedUser.FirstName} {authorizedUser.LastName}.");
                result.Result = true;
            }

            return(result);
        }
예제 #10
0
        public async Task <ActionResult> ChangePhoto(string userId, HttpPostedFileBase upload)
        {
            string returnUrl = Request.UrlReferrer.AbsolutePath + Request.UrlReferrer.Query;

            if (ModelState.IsValid)
            {
                string imagePath;

                if (upload != null)
                {
                    string filePath = "/Files/ProfileImages/" + userId + ".jpg";
                    imagePath = filePath;
                    AuthorizedUser user = await UserManager.FindByIdAsync(userId);

                    string oldPhotoPath = Server.MapPath(user.ProfileImagePath);
                    if (user.ProfileImagePath.Contains("ProfileImages") && System.IO.File.Exists(oldPhotoPath))
                    {
                        System.IO.File.Delete(oldPhotoPath);
                    }
                    else
                    {
                        helper.ChangeProfileImage(imagePath, userId);
                    }
                    upload.SaveAs(Server.MapPath("~" + filePath));
                }
                else
                {
                    return(Redirect(returnUrl));
                }

                return(RedirectToAction("UserPage", "User", new { userId }));
            }
            return(Redirect(returnUrl));
        }
예제 #11
0
        public async Task <Account> GetAccountDetails(AuthorizedUser user)
        {
            var request  = _sheetsService.Spreadsheets.Values.Get(_gSheetsSpreadsheetId, "VAid!A2:AC");
            var response = await request.ExecuteAsync();

            var data = response.Values
                       .Where(row => row.Count() == 29)
                       .Select(RowAsUserAndAccount);

            if (!data.TryFirst(x => x.AuthorizedUser.Equals(user), out var authorizedAccount))
            {
                return(null);
            }

            var account = authorizedAccount.Account;

            account.Metadata = await GetAdditionalMetadata();

            account.PotentialTransactions = await GetPotentialTransactions(data.Select(x => x.Account), account);

            account.AcceptableRecipients = GetAcceptableRecipients(data.Select(x => x.Account), account);
            account.RecentTransactions   = await GetRecentTransactions(account);

            // Cross reference to not suggest potential transactions that are also recent (active) transactions
            account.PotentialTransactions = account.PotentialTransactions
                                            .Where(potential => !account.RecentTransactions.Any(t => t.Status == TransactionStatus.Approved && t.OtherRuler == potential.RulerName))
                                            .ToList();

            return(account);
        }
예제 #12
0
        public AuthorizedUser CreateUser(string userName,
                                         string email,
                                         EDeviceClaimsContext context,
                                         string role      = ApplicationRoles.PolicyHolder,
                                         string firstName = "",
                                         string lastName  = "")
        {
            var userStore   = new UserStore <AuthorizedUser>(context);
            var userManager = new UserManager <AuthorizedUser>(userStore);

            var user = userManager.FindByEmail(email);

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

            user = new AuthorizedUser {
                UserName = userName, Email = email, FirstName = firstName, LastName = lastName
            };
            userManager.Create(user, "password");
            userManager.AddToRole(user.Id, role);
            //roleManager.Create(new IdentityRole { Name = "admin" });
            //userManager.AddToRole(user.Id, "admin");
            return(user);
        }
예제 #13
0
        public Phone GetMainPhone(AuthorizedUser authorizedUser)
        {
            Phone mainPhone = null;

            var phoneMobile = authorizedUser.Phones.FirstOrDefault(
                p => p.PhoneTypeId == _lmsRepository.GetLookupIdByTypeAndCode(LookupTypes.PhoneType, LookupCodes.PhoneType.Mobile)
                );

            var phoneHome = authorizedUser.Phones.FirstOrDefault(
                p => p.PhoneTypeId == _lmsRepository.GetLookupIdByTypeAndCode(LookupTypes.PhoneType, LookupCodes.PhoneType.Home)
                );

            if (phoneMobile != null)
            {
                mainPhone = phoneMobile;
            }
            else if (phoneHome != null && phoneMobile == null)
            {
                mainPhone = phoneHome;
            }
            else
            {
                mainPhone = authorizedUser.Phones.FirstOrDefault();
            }

            return(mainPhone);
        }
예제 #14
0
        public string Authenticate(string username, string password)
        {
            var refreshToken = GenerateRefreshToken();

            var authorizedUser = new AuthorizedUser {
                Email = username, RefreshToken = refreshToken
            };

            _database.AuthorizedUsers.Add(authorizedUser);
            _database.Save();

            int userId;

            var accessToken = GetAccessToken(authorizedUser.Id, username, password, out userId);

            var response = new
            {
                Id            = userId,
                access_token  = accessToken,
                refresh_token = refreshToken
            };

            return(JsonConvert.SerializeObject(response, new JsonSerializerSettings()
            {
                Formatting = Formatting.Indented
            }));
        }
예제 #15
0
        private void выходИзАккаунтаToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            if (currentUser == null)
            {
                return;
            }
            usersBox.Items.Remove(currentUser.login);
            usersBox.SelectedText = "";
            currentUser.imapClient.DisconnectFromServer();

            authorizedUsers.Remove(currentUser);
            listView1.Items.Clear();
            listView2.Items.Clear();
            listView3.Items.Clear();
            ClearInputs();

            webBrowser1.DocumentText = "";
            SubjectLabel.Text        = "";
            label1.Text    = "";
            label2.Text    = "";
            label3.Text    = "";
            usersBox.Text  = "";
            currentUser    = null;
            mailFolderInfo = null;
        }
예제 #16
0
        public async Task <IActionResult> Signup(SignupViewModel model)
        {
            if (ModelState.IsValid)
            {
                Gender?gender = model.Gender != String.Empty ? (Gender?)Enum.Parse(typeof(Gender), model.Gender) : null;
                User   user   = new AuthorizedUser()
                {
                    UserName       = model.Email, FirstName = model.FirstName, LastName = model.LastName, Email = model.Email,
                    EmailConfirmed = true, Blocked = false,
                    RoleId         = 3, Gender = gender, Age = model.Age,
                    Height         = model.Height, Weight = model.Weight, PhoneNumber = model.Phone
                };

                var result = await _userManager.CreateAsync(user, model.Password);

                var add_role = await _userManager.AddToRoleAsync(user, "AuthorizedUser");

                User signinUser = await _userManager.FindByEmailAsync(model.Email);

                if (result.Succeeded)
                {
                    await _signInManager.SignInAsync(signinUser, false);

                    return(RedirectToAction("Index", "Home"));
                }
                else
                {
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                }
            }
            return(View(model));
        }
예제 #17
0
        private AuthorizedUser CreateUser(string userName, string email, string firstName, string lastName, EDeviceClaimsContext context, string role = AppRoles.PolicyHolder)
        {
            var userStore   = new UserStore <AuthorizedUser>(context);
            var userManager = new UserManager <AuthorizedUser>(userStore);
            var roleStore   = new RoleStore <IdentityRole>(context);
            var roleManager = new RoleManager <IdentityRole>(roleStore);

            var user = userManager.FindByEmail(email);

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

            user = new AuthorizedUser
            {
                UserName  = userName,
                Email     = email,
                FirstName = firstName,
                LastName  = lastName
            };
            userManager.Create(user, "password");
            roleManager.Create(new IdentityRole {
                Name = role
            });
            userManager.AddToRole(user.Id, role);
            return(user);
        }
예제 #18
0
 /// <summary>
 ///     Класс с ответственностью возвращать обновления пользователя.
 ///     Хранит так же всякую дичь для связи с сервером ВК.
 /// </summary>
 ///
 /// <param name="user">
 ///     Пользователь, который прошел процедуру залогинивания и
 ///     получил ключ-токен для совершения действий с API.
 /// </param>
 public VKUpdatesGetter(AuthorizedUser user)
 {
     connector.Authorize(new ApiAuthParams()
     {
         AccessToken = user.AccessToken
     });
     UpdateLongpollServerInfo();
 }
예제 #19
0
        public Address GetCurrentAddress(AuthorizedUser authorizedUser)
        {
            var currentAddress = authorizedUser.Addresses.FirstOrDefault(
                a => a.AddressTypeId == _lmsRepository.GetLookupIdByTypeAndCode(LookupTypes.AddressType, LookupCodes.AddressType.Current)
                );

            return(currentAddress);
        }
예제 #20
0
        public async Task <IList <DistributionReadModel> > Filter([FromBody] DistributionsFilter filter)
        {
            AuthorizedUser user = authorizedUserProvider.Get();

            return(await mediator.Send(new GetDistributionsByFilter.Query {
                Filter = filter, IsAdmin = user.IsAdmin, UserSid = user.Sid
            }));
        }
 public void UpdatePolicyUserId(AuthorizedUser user, ICollection <Policy> devices)
 {
     foreach (var device in devices)
     {
         device.UserId = user.Id;
         Repo.Update(device);
     }
 }
예제 #22
0
        public ActionResult RemoveUser(int id)
        {
            AuthorizedUser authorizedUser = _db.AuthorizedUsers.Find(id);

            _db.AuthorizedUsers.Remove(authorizedUser);
            _db.SaveChanges();
            return(RedirectToAction("Index"));
        }
예제 #23
0
        /// <inheritdoc />
        public override async Task OnConnectedAsync()
        {
            await base.OnConnectedAsync();

            AuthorizedUser currentUser = authorizedUserProvider.Get();
            await Groups.AddToGroupAsync(Context.ConnectionId, GetGroupName(currentUser));

            logger.LogInformation($"{currentUser} connected to notifications.");
        }
예제 #24
0
        public async Task PublishJobEventsForProcessingJobs(int limit)
        {
            AuthorizedUser user = authorizedUserProvider.Get();

            foreach ((string jobId, string eventType) in jobStorageService.GetAllActiveJobsForUser(user.Sid, limit))
            {
                await PublishToCurrentUser(new JobSignalREvent(eventType, new JobEventPayload(jobId, 0), user.Sid));
            }
        }
예제 #25
0
        /// <inheritdoc />
        public override async Task OnDisconnectedAsync(Exception exception)
        {
            await base.OnDisconnectedAsync(exception);

            AuthorizedUser currentUser = authorizedUserProvider.Get();
            await Groups.RemoveFromGroupAsync(Context.ConnectionId, GetGroupName(currentUser));

            logger.LogInformation($"{currentUser} disconnected from notifications.");
        }
예제 #26
0
        /// <inheritdoc />
        public AuthorizedUser Get()
        {
            if (!httpContext.User.Identity.IsAuthenticated)
            {
                return(AuthorizedUser.Anonymous);
            }

            return(AuthorizedUser.CreateFromClaimPrincipal(httpContext.User));
        }
예제 #27
0
        public IActionResult UsersAdd([FromForm] AuthorizedUser user)
        {
            if (user.Id != 0 && user.Name != null)
            {
                _usersCollection.Insert(user.Id, user);
            }

            return(RedirectToAction("UsersList"));
        }
        public Claim[] GetClaims(AuthorizedUser user)
        {
            var claims = new[]
            {
                new Claim(ClaimTypes.Name, user.Name),
                new Claim(ClaimTypes.Role, user.Role)
            };

            return(claims);
        }
        public ActionResult UserDetail(int id)
        {
            AuthorizedUser user = db.AllUsers.OfType <AuthorizedUser>().FirstOrDefault(x => x.Id == id);

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

            return(PartialView(user));
        }
        private IActionResult AuthTokenResponse(AuthorizedUser user)
        {
            var response = _responseService.PrepareTokenResponse(user);

            return(Ok(new
            {
                token = response.Token,
                validTo = response.ValidTo,
                user
            }));
        }