示例#1
0
        private async Task <GitHubAccount> Login(string code)
        {
            using (_alertDialogService.Activate("Logging in..."))
            {
                var token = await Client.RequestAccessToken(ClientId, ClientSecret, code, RedirectUri, WebDomain);

                var client = Client.BasicOAuth(token.AccessToken);
                var info   = (await client.ExecuteAsync(client.AuthenticatedUser.GetInfo())).Data;
                client.Username = info.Login;

                var account = (await _accountsRepository.Find(Client.DefaultApi, info.Login)) ?? new GitHubAccount();
                account.Username     = info.Login;
                account.OAuth        = token.AccessToken;
                account.AvatarUrl    = info.AvatarUrl;
                account.Name         = info.Name;
                account.Email        = info.Email;
                account.Domain       = Client.DefaultApi;
                account.WebDomain    = WebDomain;
                account.IsEnterprise = false;

                await _accountsRepository.Insert(account);

                await _accountsRepository.SetDefault(account);

                return(account);
            }
        }
示例#2
0
        public async Task UpdateStaus(int accountId, int orderId, OrderStatuses newOrderStatus)
        {
            var account = accountsRepositoty.Find(accountId);

            if (account == null || !IsChangeAllowed(account.Role, newOrderStatus) || !IsNextStep(newOrderStatus, orderId))
            {
                throw new Exception("CantUpdate");
            }

            var newStatus = new OrderStatus()
            {
                StatusChangeTime = DateTime.Now,
                OrderId          = orderId,
                Status           = newOrderStatus
            };
            var order = ordersRepository.GetOrderWithStatusAndMeals(orderId);

            order.LatestOrderStatus = newOrderStatus;

            order.OrderStatuses.Add(newStatus);
            ordersRepository.Update(order);

            var restaurant = restaurantsRepository.Find(order.RestaurantId);
            await clientCommunicationService.OrderStatusChangedNotify((int)order.CustomerId, orderId, restaurant.OwnerId, newOrderStatus);
        }
示例#3
0
        private bool IsMealModifyingAllow(int accountId, Meal meal)
        {
            var account    = accountsRepository.Find(accountId);
            var restaurant = restaurantsRepository.Find(meal.RestaurantId);

            return(account != null && restaurant != null && account.AccountId == restaurant.OwnerId);
        }
        public bool IsUserAllowedForRestaureant(int accountId, int restaurantId)
        {
            if (accountId == 0)
            {
                return(true);
            }

            var account = accountsRepository.Find(accountId);

            if (account.Role == AccountRoles.RegularUser)
            {
                var blokedUserOwners = blockedUsersRepository.BlokedUserOwners(accountId);
                var restaurant       = restaurantsRepository.Find(restaurantId);
                return(!blokedUserOwners.Any(buo => buo.OwnerId == restaurant.OwnerId));
            }
            else
            {
                var restarurants = restaurantsRepository.GetOwnersRestaurants(accountId);
                return(restarurants.Any(r => r.EntityId == restaurantId));
            }
        }
示例#5
0
        public async Task <GitHubAccount> Authenticate(string apiDomain, string webDomain, string token, bool enterprise)
        {
            //Make some valid checks
            if (string.IsNullOrEmpty(token))
            {
                throw new ArgumentException("Token is invalid");
            }
            if (apiDomain != null && !Uri.IsWellFormedUriString(apiDomain, UriKind.Absolute))
            {
                throw new ArgumentException("API Domain is invalid");
            }
            if (webDomain != null && !Uri.IsWellFormedUriString(webDomain, UriKind.Absolute))
            {
                throw new ArgumentException("Web Domain is invalid");
            }

            var client   = Client.BasicOAuth(token, apiDomain);
            var userInfo = (await client.ExecuteAsync(client.AuthenticatedUser.GetInfo())).Data;

            var scopes = await GetScopes(apiDomain, token);

            CheckScopes(scopes);

            var account = (await _accounts.Find(apiDomain, userInfo.Login)) ?? new GitHubAccount();

            account.Username     = userInfo.Login;
            account.Domain       = apiDomain;
            account.WebDomain    = webDomain;
            account.IsEnterprise = enterprise;
            account.OAuth        = token;
            account.Username     = userInfo.Login;
            account.Name         = userInfo.Name;
            account.Email        = userInfo.Email;
            account.AvatarUrl    = userInfo.AvatarUrl;

            await _accounts.Insert(account);

            return(account);
        }
        private bool IsRestaurantModifyingAllow(int accountId, Restaurant restaurant)
        {
            var account = accountsRepository.Find(accountId);

            return(account != null && restaurant != null && account.AccountId == restaurant.OwnerId);
        }