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); } }
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); }
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)); } }
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); }