/// <summary> /// A Utility method to Get all the Users from given SqlConnection and SqlCommand /// </summary> /// <param name="items">The RestaurantUser Collection which will be updated with Read Rows</param> /// <param name="cn">The SqlConnection object to use for Database connection</param> /// <param name="cmd">The SqlCommand object that will be used to retrive data</param> protected static void GetAllRecord(IList <RestaurantUser> items, SqlConnection cn, SqlCommand cmd) { cn.Open(); var rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); while (rdr.Read()) { var item = new RestaurantUser(rdr.TryGetDataAsInt(0), rdr.TryGetDataAsString(1), rdr.TryGetDataAsGuid(9)) { MobileNumber = rdr.TryGetDataAsUInt64(2), Address = rdr.TryGetDataAsString(3), EmailId = rdr.TryGetDataAsString(4), FacebookDetail = new FacebookUserDetailRepository().Find(rdr.TryGetDataAsUInt64(5)), Password = rdr.TryGetDataAsString(6), UserRole = (UserBase.RestaurantUserRole)rdr.TryGetDataAsInt(7), LoginExpiresOn = rdr.TryGetDataAsDateTime(8) }; items.Add(item); } if (!rdr.IsClosed) { rdr.Close(); } }
public static FormsAuthenticationTicket MakeAuthTicket(RestaurantUser user, bool ispersistent) { var ticket = (FormsAuthenticationTicket)null; if (user != null) { //check if login has expired according to user instance, if it has then set loginexpire to new and correct datetime var loginexpiry = user.LoginExpiresOn.ToUniversalTime() < DateTime.UtcNow ? (user.UserRole == UserBase.RestaurantUserRole.Guest ? DateTime.UtcNow.AddMinutes(86400D) : DateTime.UtcNow.AddMinutes(FormsAuthentication.Timeout.TotalMinutes)) : user.LoginExpiresOn.ToUniversalTime(); ticket = new FormsAuthenticationTicket(1, // Version number user.UserName, //User unique name according to Membership database DateTime.UtcNow, //Time of creation loginexpiry, // Time of Ticket Expiry ispersistent, // Is ticket Persistent SerializeUserdata(user) // Add user specific data like ID, UniqueId and Friendly Name ); } //Also set the loginexpireson datetime for user //if (ticket != null) //{ // user.LoginExpiresOn = ticket.Expiration; // new RestaurantUserRepository().Update(user); //} return(ticket); }
public async Task <ActionResult> RegisterRestaurant(RegisterRestaurantViewModel model) { if (this.ModelState.IsValid) { var db = new PlacesToEatDbContext(); var categoryId = db.Categories.Where(x => x.Name == "All").Select(x => x.Id).FirstOrDefault(); var user = new RestaurantUser { UserName = model.UserName, Email = model.Email, PhoneNumber = model.PhoneNumber, Name = model.Name, Address = model.Address, Latitude = model.Latitude, Longitude = model.Longitude, CategoryId = categoryId }; var result = await this.UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await this.UserManager.AddToRoleAsync(user.Id, "Restaurant"); await this.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(this.RedirectToAction("Index", "Home")); } this.AddErrors(result); } // If we got this far, something failed, redisplay form return(this.View(model)); }
public void DetailsReturnsValidRestaurantDetailedViewModelId() { //Arrange var restaurantId = Guid.NewGuid().ToString(); var resultDbRestaurant = new RestaurantUser { Id = restaurantId }; var mockedRestaurantUserService = new Mock <IRestaurantUserService>(); mockedRestaurantUserService.Setup(x => x.GetById(restaurantId)).Returns(resultDbRestaurant); var autoMapperConfig = new AutoMapperConfig(); autoMapperConfig.Execute(typeof(RestaurantController).Assembly); var restaurantController = new RestaurantController(mockedRestaurantUserService.Object, null); //Act var actionResult = restaurantController.Details(restaurantId) as ViewResult; var restaurantViewModel = (RestaurantDetailedViewModel)actionResult.ViewData.Model; var expectedRestaurantViewModel = new RestaurantDetailedViewModel { Id = resultDbRestaurant.Id }; //Assert Assert.AreEqual(expectedRestaurantViewModel.Id, restaurantViewModel.Id, "Expected RestaurantDetailedViewModel Id doesn`t match actual Id."); }
private void TryCreateFirstAdmin() { if (Membership.Provider.GetUser("*****@*****.**", false) != null) { return; } try { var firstadmin = new RestaurantUser(0, "Mr. Spock", Guid.NewGuid()) { UserRole = UserBase.RestaurantUserRole.Admin, EmailId = "*****@*****.**", Password = "******", Address = "On Starship Enterprise, The Advanced FTL Fighter Ship, Crusing through space, going places where no one has gone before :)", MobileNumber = 9876543210 }; MembershipCreateStatus status; ((Infrastructure.Providers.CustomSqlMembershipProviderWrapper)Membership.Provider).CreateUser( firstadmin, out status, null, null); } // ReSharper disable EmptyGeneralCatchClause catch {} // ReSharper restore EmptyGeneralCatchClause }
public async Task <IHttpActionResult> PostRestaurantUser(RestaurantUser restaurantUser) { restaurantUser.UserId = Guid.NewGuid().ToString(); if (!ModelState.IsValid) { return(BadRequest(ModelState)); } _db.RestaurantUsers.Add(restaurantUser); try { await _db.SaveChangesAsync(); } catch (DbUpdateException) { if (RestaurantUserExists(restaurantUser.UserId)) { return(Conflict()); } else { throw; } } return(CreatedAtRoute("DefaultApi", new { id = restaurantUser.UserId }, restaurantUser)); }
public async Task <IHttpActionResult> PutRestaurantUser(string userId, Delta <RestaurantUser> patch) { RestaurantUser restaurantUser = await _db.RestaurantUsers.FindAsync(userId); if (restaurantUser == null) { return(NotFound()); } try { patch.Patch(restaurantUser); _db.Entry(restaurantUser).State = EntityState.Modified; await _db.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!RestaurantUserExists(userId)) { return(NotFound()); } throw; } return(StatusCode(HttpStatusCode.NoContent)); }
public void SignIn(RestaurantUser user, bool createPersistentCookie) { if (user == null) { throw new ArgumentNullException("user", "Value cannot be null or empty"); } FormsAuthenticationHelper.SetAuthCookie(user, createPersistentCookie); }
public void Delete(Guid id) { RestaurantUser User = new RestaurantUser { Id = id }; _restaurantUserRepository.Delete(User); _restaurantUserRepository.Save(); }
public virtual RestaurantUser CreateUser(RestaurantUser user, out MembershipCreateStatus status, string secretQuestion, string secretAnswer) { //users will be stored as GUID as their providerkey in Membership database and with //Real name in Restaurant Database RestaurantMembershipUser = user; CheckRestaurantMembershipUser(); MembershipUser sqlresult; var repoIdresult = -1; // Guest user will have their GUID as their username and Password because Guest user can never log in, // he is automatically logged in through his authentication ticket, so this will always be an internal call // Also since all user needs to have a valid email id except Guest user, we are using guid as dummy email if (user.UserRole == UserBase.RestaurantUserRole.Guest) { sqlresult = base.CreateUser(user.UserGuid.ToString(), user.UserGuid.ToString(), user.UserGuid.ToString() + "@guestuser.com", null, null, true, user.UserGuid, out status); if (status == MembershipCreateStatus.Success) { //Login Expiration for a Guset user is set to 86400 Minutes, ie 60 days user.LoginExpiresOn = DateTime.UtcNow.AddMinutes(86400D); user.Password = user.UserGuid.ToString(); repoIdresult = UserRepository.Add(user); } } //Facebook user will have their id as username and UserGuid as password else if (user.FacebookDetail != null && user.FacebookDetail.FacebookId > 0 && !user.FacebookDetail.OAuthToken.IsNullOrEmpty()) { sqlresult = base.CreateUser(user.FacebookDetail.FacebookId.ToString(), user.UserGuid.ToString(), user.EmailId, null, null, true, user.UserGuid, out status); if (status == MembershipCreateStatus.Success) { user.Password = user.UserGuid.ToString(); user.LoginExpiresOn = user.FacebookDetail.ExpiresOn; repoIdresult = UserRepository.Add(user); } } //For every one else the user creation is normal else { sqlresult = base.CreateUser(user.EmailId, user.Password, user.EmailId, secretQuestion, secretAnswer, true, user.UserGuid, out status); if (status == MembershipCreateStatus.Success) { user.LoginExpiresOn = DateTime.UtcNow.AddMinutes(FormsAuthentication.Timeout.TotalMinutes); repoIdresult = UserRepository.Add(user); } } if (status == MembershipCreateStatus.Success && sqlresult != null && repoIdresult > 0) { return(new RestaurantUser(repoIdresult, user.Name, user.UserGuid, user.MobileNumber, user.LoginExpiresOn, user.UserRole, user.Address, user.EmailId, user.Password, user.FacebookDetail, sqlresult)); } return(null); }
public RestaurantUser CreateUser(RestaurantUser user, out MembershipCreateStatus status, string secretQuestion, string secretAnswer) { var result = (RestaurantUser)null; status = MembershipCreateStatus.ProviderError; if (_provider is CustomSqlMembershipProviderWrapper) { result = (_provider as CustomSqlMembershipProviderWrapper).CreateUser(user, out status, secretQuestion, secretAnswer); } return(result); }
public void Should_ReturnRestaurantClaims_Given_RestaurantAccountType() { // Arrange var accountType = AccountTypes.Restaurant; // Act var result = factory.Create(accountType); var expected = new RestaurantUser().Claims; // Assert result.Should().BeEquivalentTo(expected); }
public void Create(RestaurantUserCreateModel entity) { RestaurantUser restaurantUser = new RestaurantUser { Id = new Guid(), User = entity.User, Password = entity.Password, Email = entity.Email, Privilege = RestaurantUser.PrivilegeValues.None, }; _restaurantUserRepository.Create(restaurantUser); _restaurantUserRepository.Save(); }
public void Update(RestaurantUserUpdateModel entity) { RestaurantUser restaurantUser = new RestaurantUser { Id = entity.Id, User = entity.User, Password = entity.Password, Email = entity.Email, RestaurantId = entity.RestaurantId }; _restaurantUserRepository.Update(restaurantUser); _restaurantUserRepository.Save(); }
public async Task <IHttpActionResult> DeleteRestaurantUser(string id) { RestaurantUser restaurantUser = await _db.RestaurantUsers.FindAsync(id); if (restaurantUser == null) { return(NotFound()); } _db.RestaurantUsers.Remove(restaurantUser); await _db.SaveChangesAsync(); return(Ok(restaurantUser)); }
public async Task <IActionResult> Create([Bind("Id,RestaurantId")] RestaurantUser restaurantUser) { ModelState.Remove("UserId"); if (ModelState.IsValid) { var user = await GetUserAsync(); restaurantUser.UserId = user.Id; _context.Add(restaurantUser); await _context.SaveChangesAsync(); return(RedirectToAction("Index", "Restaurants")); } ViewData["RestaurantId"] = new SelectList(_context.Restaurants, "Id", "RestaurantId", restaurantUser.RestaurantId); return(View(restaurantUser)); }
public void DetailsReturnsValidRestaurantDetailedViewModelComments() { //Arrange var restaurantId = Guid.NewGuid().ToString(); var comments = new List <Comment> { new Comment { Author = new RegularUser() { FirstName = "Test", LastName = "User1" } } }; var resultDbRestaurant = new RestaurantUser { Comments = comments }; var mockedRestaurantUserService = new Mock <IRestaurantUserService>(); mockedRestaurantUserService.Setup(x => x.GetById(restaurantId)).Returns(resultDbRestaurant); var autoMapperConfig = new AutoMapperConfig(); autoMapperConfig.Execute(typeof(RestaurantController).Assembly); var restaurantController = new RestaurantController(mockedRestaurantUserService.Object, null); //Act var actionResult = restaurantController.Details(restaurantId) as ViewResult; var restaurantViewModel = (RestaurantDetailedViewModel)actionResult.ViewData.Model; var expectedRestaurantViewModel = new RestaurantDetailedViewModel { Comments = resultDbRestaurant.Comments.AsQueryable().To <CommentViewModel>().ToList() }; //Assert Assert.AreEqual(restaurantViewModel.Comments.Count, expectedRestaurantViewModel.Comments.Count, "Expected RestaurantDetailedViewModel Comments count doesn`t match actual count."); Assert.AreEqual(restaurantViewModel.Comments.FirstOrDefault().Author, expectedRestaurantViewModel.Comments.FirstOrDefault().Author, "Expected RestaurantDetailedViewModel comment Author doesn`t match the actual Author."); }
private static RestaurantUser CombineResult(RestaurantUser restaurantresult, MembershipUser sqlresult) { var result = (RestaurantUser)null; if (restaurantresult != null && sqlresult != null) { result = new RestaurantUser(restaurantresult.UserId, restaurantresult.Name, restaurantresult.UserGuid, restaurantresult.MobileNumber, restaurantresult.LoginExpiresOn, restaurantresult.UserRole, restaurantresult.Address, restaurantresult.EmailId, restaurantresult.Password, restaurantresult.FacebookDetail, sqlresult ); } return(result); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? Url.Content("~/"); if (ModelState.IsValid) { var user = new RestaurantUser { UserName = Input.Email, Email = Input.Email }; var result = await _userManager.CreateAsync(user, Input.Password); if (result.Succeeded) { _logger.LogInformation("User created a new account with password."); var code = await _userManager.GenerateEmailConfirmationTokenAsync(user); var callbackUrl = Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { userId = user.Id, code = code }, protocol: Request.Scheme); await _emailSender.SendEmailAsync(Input.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); await _signInManager.SignInAsync(user, isPersistent : false); return(LocalRedirect(returnUrl)); } foreach (var error in result.Errors) { ModelState.AddModelError(string.Empty, error.Description); } } // If we got this far, something failed, redisplay form return(Page()); }
public void DetailsReturnsValidRestaurantDetailedViewModelFavourites() { //Arrange var restaurantId = Guid.NewGuid().ToString(); var regularUsers = new List <RegularUser> { new RegularUser(), new RegularUser() }; var resultDbRestaurant = new RestaurantUser { RegularUsers = regularUsers }; var mockedRestaurantUserService = new Mock <IRestaurantUserService>(); mockedRestaurantUserService.Setup(x => x.GetById(restaurantId)).Returns(resultDbRestaurant); var autoMapperConfig = new AutoMapperConfig(); autoMapperConfig.Execute(typeof(RestaurantController).Assembly); var restaurantController = new RestaurantController(mockedRestaurantUserService.Object, null); //Act var actionResult = restaurantController.Details(restaurantId) as ViewResult; var restaurantViewModel = (RestaurantDetailedViewModel)actionResult.ViewData.Model; var expectedRestaurantViewModel = new RestaurantDetailedViewModel { Favourites = resultDbRestaurant.RegularUsers.AsQueryable().To <RegularUserViewModel>().ToList(), }; //Assert Assert.AreEqual(restaurantViewModel.Favourites.Count, expectedRestaurantViewModel.Favourites.Count, "Expected RestaurantDetailedViewModel Favourites count doesn`t match actual count."); }
public static void SeedData(AppDbContext context) { var categories = new Category[] { new Category() { Name = "Sushi", Id = new Guid("00000000-0000-0000-0000-000000000001") }, new Category() { Name = "Burger", Id = new Guid("00000000-0000-0000-0000-000000000002") }, new Category() { Name = "Pasta", Id = new Guid("00000000-0000-0000-0000-000000000003") }, new Category() { Name = "Pizza", Id = new Guid("00000000-0000-0000-0000-000000000004") }, new Category() { Name = "Vegan", Id = new Guid("00000000-0000-0000-0000-000000000005") }, new Category() { Name = "Healthy", Id = new Guid("00000000-0000-0000-0000-000000000006") }, new Category() { Name = "Dessert", Id = new Guid("00000000-0000-0000-0000-000000000007") }, new Category() { Name = "Noodles", Id = new Guid("00000000-0000-0000-0000-000000000008") }, new Category() { Name = "Breakfast", Id = new Guid("00000000-0000-0000-0000-000000000009") }, new Category() { Name = "Smoothie", Id = new Guid("00000000-0000-0000-0000-000000000010") }, new Category() { Name = "Kebab", Id = new Guid("00000000-0000-0000-0000-000000000011") }, new Category() { Name = "Salad", Id = new Guid("00000000-0000-0000-0000-000000000012") }, new Category() { Name = "Vegetarian", Id = new Guid("00000000-0000-0000-0000-000000000013") }, new Category() { Name = "Ramen", Id = new Guid("00000000-0000-0000-0000-000000000014") }, new Category() { Name = "Smoothie", Id = new Guid("00000000-0000-0000-0000-000000000015") }, new Category() { Name = "Kebab", Id = new Guid("00000000-0000-0000-0000-000000000016") }, new Category() { Name = "Salad", Id = new Guid("00000000-0000-0000-0000-000000000017") }, new Category() { Name = "Mexican", Id = new Guid("00000000-0000-0000-0000-000000000018") }, new Category() { Name = "Thai", Id = new Guid("00000000-0000-0000-0000-000000000019") }, new Category() { Name = "Italian", Id = new Guid("00000000-0000-0000-0000-000000000020") }, new Category() { Name = "Indian", Id = new Guid("00000000-0000-0000-0000-000000000021") }, new Category() { Name = "Japanese", Id = new Guid("00000000-0000-0000-0000-000000000022") }, new Category() { Name = "American", Id = new Guid("00000000-0000-0000-0000-000000000023") }, new Category() { Name = "Chinese", Id = new Guid("00000000-0000-0000-0000-000000000024") }, new Category() { Name = "Vietnamese", Id = new Guid("00000000-0000-0000-0000-000000000025") }, new Category() { Name = "Nepalese", Id = new Guid("00000000-0000-0000-0000-000000000026") }, new Category() { Name = "Georgian", Id = new Guid("00000000-0000-0000-0000-000000000027") }, new Category() { Name = "Street Food", Id = new Guid("00000000-0000-0000-0000-000000000028") }, new Category() { Name = "Steak", Id = new Guid("00000000-0000-0000-0000-000000000029") }, new Category() { Name = "Mediterranean", Id = new Guid("00000000-0000-0000-0000-000000000030") }, new Category() { Name = "Sandwich", Id = new Guid("00000000-0000-0000-0000-000000000031") }, new Category() { Name = "Soup", Id = new Guid("00000000-0000-0000-0000-000000000032") }, new Category() { Name = "Fish", Id = new Guid("00000000-0000-0000-0000-000000000033") }, new Category() { Name = "Cafe", Id = new Guid("00000000-0000-0000-0000-000000000034") }, new Category() { Name = "Tapas", Id = new Guid("00000000-0000-0000-0000-000000000035") } }; foreach (var category in categories) { if (!context.Categories.Any(l => l.Id == category.Id)) { context.Categories.Add(category); } } context.SaveChanges(); var restaurants = new Restaurant[] { new Restaurant() { Name = "KFC Kristiine", Phone = "550 1234", Address = "Endla 45", DeliveryCost = 3, Id = new Guid("00000000-0000-0000-0000-000000000001"), }, new Restaurant() { Name = "Burger King Rocca al Mare", Phone = "665 9345", Address = "Paldiski maantee 102", DeliveryCost = 3, Id = new Guid("00000000-0000-0000-0000-000000000002") }, new Restaurant() { Name = "McDonald's Mustamäe", Phone = "5561 7012", Address = " A. H. Tammsaare tee 76", DeliveryCost = 3, Id = new Guid("00000000-0000-0000-0000-000000000003") }, new Restaurant() { Name = "Dodo Pizza Sõpruse pst.", Phone = "629 9209", Address = "Sõpruse pst. 211a", DeliveryCost = 3, Id = new Guid("00000000-0000-0000-0000-000000000004") }, }; foreach (var restaurant in restaurants) { if (!context.Restaurants.Any(l => l.Id == restaurant.Id)) { context.Restaurants.Add(restaurant); } } var addresses = new Address[] { new Address() { County = "Harjumaa", City = "Tallinn", Street = "Akadeemia tee", BuildingNumber = "7/2", Apartment = "201b", Name = "Uhikas", AppUserId = new Guid("00000000-0000-0000-0000-000000000002"), Id = new Guid("00000000-0000-0000-0000-000000000001") }, new Address() { County = "Harjumaa", City = "Tallinn", Street = "Sõpruse pst.", BuildingNumber = "212", Apartment = "27", Name = "Home", AppUserId = new Guid("00000000-0000-0000-0000-000000000004"), Id = new Guid("00000000-0000-0000-0000-000000000002") }, }; foreach (var address in addresses) { if (!context.Addresses.Any(l => l.Id == address.Id)) { context.Addresses.Add(address); } } context.SaveChanges(); var restaurantUsers = new RestaurantUser[] { new RestaurantUser() { RestaurantId = new Guid("00000000-0000-0000-0000-000000000001"), AppUserId = new Guid("00000000-0000-0000-0000-000000000004"), Id = new Guid("00000000-0000-0000-0000-000000000001") }, new RestaurantUser() { RestaurantId = new Guid("00000000-0000-0000-0000-000000000002"), AppUserId = new Guid("00000000-0000-0000-0000-000000000005"), Id = new Guid("00000000-0000-0000-0000-000000000002") }, }; foreach (var restaurantUser in restaurantUsers) { if (!context.RestaurantUsers.Any(l => l.Id == restaurantUser.Id)) { context.RestaurantUsers.Add(restaurantUser); } } context.SaveChanges(); }
protected override void Seed(PlacesToEatDbContext context) { var userManager = new UserManager <User>(new UserStore <User>(context)); var roleManager = new RoleManager <IdentityRole>(new RoleStore <IdentityRole>(context)); if (!roleManager.Roles.Any()) { roleManager.Create(new IdentityRole { Name = "Regular" }); roleManager.Create(new IdentityRole { Name = "Restaurant" }); roleManager.Create(new IdentityRole { Name = "Administrator" }); } userManager.PasswordValidator = new PasswordValidator { RequiredLength = 4, RequireNonLetterOrDigit = false, RequireDigit = false, RequireLowercase = false, RequireUppercase = false, }; if (!context.Categories.Any()) { var category = new Category { Name = "All" }; context.Categories.Add(category); category = new Category { Name = "Fast Food" }; context.Categories.Add(category); category = new Category { Name = "Casual" }; context.Categories.Add(category); category = new Category { Name = "Steak House" }; context.Categories.Add(category); category = new Category { Name = "Bar" }; context.Categories.Add(category); category = new Category { Name = "Chinese Food" }; context.Categories.Add(category); category = new Category { Name = "Italian Food" }; context.Categories.Add(category); category = new Category { Name = "Pizza" }; context.Categories.Add(category); context.SaveChanges(); } var initialUser = userManager.Users.FirstOrDefault(x => x.UserName == "admin"); if (initialUser == null) { var user = new User { UserName = "******" }; var result = userManager.Create(user, "admin"); userManager.AddToRole(user.Id, "Administrator"); user = new RegularUser { FirstName = "User", LastName = "Testov", UserName = "******" }; result = userManager.Create(user, "user"); if (result.Succeeded) { userManager.AddToRole(user.Id, "Regular"); } user = new RegularUser { FirstName = "Pesho", LastName = "Peshov", UserName = "******" }; result = userManager.Create(user, "pesho"); if (result.Succeeded) { userManager.AddToRole(user.Id, "Regular"); } var restaurant = new RestaurantUser { Name = @"Happy ""Александър Малинов""", UserName = "******", Address = @"бул. ""Александър Малинов"" 37, 1729 София", Email = "*****@*****.**", PhoneNumber = "088 818 1072", Latitude = 42.6480622000956, Longitude = 23.3790537714958, CategoryId = 1 }; result = userManager.Create(restaurant, "123456"); if (result.Succeeded) { userManager.AddToRole(restaurant.Id, "Restaurant"); } restaurant = new RestaurantUser { Name = @"McDonalds ""Александър Малинов""", UserName = "******", Address = @"Бул. Ал. Малинов, Срещу Нова Деница, София", Email = "*****@*****.**", PhoneNumber = "088 400 0310", Latitude = 42.6472434650249, Longitude = 23.3757828176022, CategoryId = 2 }; result = userManager.Create(restaurant, "123456"); if (result.Succeeded) { userManager.AddToRole(restaurant.Id, "Restaurant"); } restaurant = new RestaurantUser { Name = @"Хепи голдън (Син Жон ООД)", UserName = "******", Address = @"София, бул. Ал.Малинов", Email = "*****@*****.**", PhoneNumber = "02 975 3688", Latitude = 42.6512995505691, Longitude = 23.3781887590885, CategoryId = 1 }; result = userManager.Create(restaurant, "123456"); if (result.Succeeded) { userManager.AddToRole(restaurant.Id, "Restaurant"); } restaurant = new RestaurantUser { Name = @"ПИЦИ ФРИЦИ", UserName = "******", Address = @"жк Младост-1а 510,1729 София,България", Email = "*****@*****.**", PhoneNumber = "+359 2 974 3058", Latitude = 42.6488631690378, Longitude = 23.3802500367165, CategoryId = 8 }; result = userManager.Create(restaurant, "123456"); if (result.Succeeded) { userManager.AddToRole(restaurant.Id, "Restaurant"); } context.SaveChanges(); } }
/// <param name='operations'> /// Reference to the RestaurantClient.IRestaurantUsers. /// </param> /// <param name='restaurantUser'> /// Required. /// </param> public static RestaurantUser PostRestaurantUserByRestaurantuser(this IRestaurantUsers operations, RestaurantUser restaurantUser) { return(Task.Factory.StartNew((object s) => { return ((IRestaurantUsers)s).PostRestaurantUserByRestaurantuserAsync(restaurantUser); } , operations, CancellationToken.None, TaskCreationOptions.None, TaskScheduler.Default).Unwrap().GetAwaiter().GetResult()); }
/// <param name='restaurantUser'> /// Required. /// </param> /// <param name='cancellationToken'> /// Cancellation token. /// </param> public async Task <HttpOperationResponse <RestaurantUser> > PostRestaurantUserByRestaurantuserWithOperationResponseAsync(RestaurantUser restaurantUser, CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { // Validate if (restaurantUser == null) { throw new ArgumentNullException("restaurantUser"); } // Tracing bool shouldTrace = ServiceClientTracing.IsEnabled; string invocationId = null; if (shouldTrace) { invocationId = ServiceClientTracing.NextInvocationId.ToString(); Dictionary <string, object> tracingParameters = new Dictionary <string, object>(); tracingParameters.Add("restaurantUser", restaurantUser); ServiceClientTracing.Enter(invocationId, this, "PostRestaurantUserByRestaurantuserAsync", tracingParameters); } // Construct URL string url = ""; url = url + "/api/RestaurantUsers"; string baseUrl = this.Client.BaseUri.AbsoluteUri; // Trim '/' character from the end of baseUrl and beginning of url. if (baseUrl[baseUrl.Length - 1] == '/') { baseUrl = baseUrl.Substring(0, baseUrl.Length - 1); } if (url[0] == '/') { url = url.Substring(1); } url = baseUrl + "/" + url; url = url.Replace(" ", "%20"); // Create HTTP transport objects HttpRequestMessage httpRequest = new HttpRequestMessage(); httpRequest.Method = HttpMethod.Post; httpRequest.RequestUri = new Uri(url); // Set Headers // Set Credentials if (this.Client.Credentials != null) { cancellationToken.ThrowIfCancellationRequested(); await this.Client.Credentials.ProcessHttpRequestAsync(httpRequest, cancellationToken).ConfigureAwait(false); } // Serialize Request string requestContent = null; JToken requestDoc = restaurantUser.SerializeJson(null); requestContent = requestDoc.ToString(Newtonsoft.Json.Formatting.Indented); httpRequest.Content = new StringContent(requestContent, Encoding.UTF8); httpRequest.Content.Headers.ContentType = MediaTypeHeaderValue.Parse("application/json"); // Send Request if (shouldTrace) { ServiceClientTracing.SendRequest(invocationId, httpRequest); } cancellationToken.ThrowIfCancellationRequested(); HttpResponseMessage httpResponse = await this.Client.HttpClient.SendAsync(httpRequest, cancellationToken).ConfigureAwait(false); if (shouldTrace) { ServiceClientTracing.ReceiveResponse(invocationId, httpResponse); } HttpStatusCode statusCode = httpResponse.StatusCode; cancellationToken.ThrowIfCancellationRequested(); string responseContent = await httpResponse.Content.ReadAsStringAsync().ConfigureAwait(false); if (statusCode != HttpStatusCode.OK) { HttpOperationException <object> ex = new HttpOperationException <object>(); ex.Request = httpRequest; ex.Response = httpResponse; ex.Body = null; if (shouldTrace) { ServiceClientTracing.Error(invocationId, ex); } throw ex; } // Create Result HttpOperationResponse <RestaurantUser> result = new HttpOperationResponse <RestaurantUser>(); result.Request = httpRequest; result.Response = httpResponse; // Deserialize Response if (statusCode == HttpStatusCode.OK) { RestaurantUser resultModel = new RestaurantUser(); JToken responseDoc = null; if (string.IsNullOrEmpty(responseContent) == false) { responseDoc = JToken.Parse(responseContent); } if (responseDoc != null) { resultModel.DeserializeJson(responseDoc); } result.Body = resultModel; } if (shouldTrace) { ServiceClientTracing.Exit(invocationId, result); } return(result); }
/// <param name='operations'> /// Reference to the RestaurantClient.IRestaurantUsers. /// </param> /// <param name='restaurantUser'> /// Required. /// </param> /// <param name='cancellationToken'> /// Cancellation token. /// </param> public static async Task <RestaurantUser> PostRestaurantUserByRestaurantuserAsync(this IRestaurantUsers operations, RestaurantUser restaurantUser, CancellationToken cancellationToken = default(System.Threading.CancellationToken)) { Microsoft.Rest.HttpOperationResponse <RestaurantClient.Models.RestaurantUser> result = await operations.PostRestaurantUserByRestaurantuserWithOperationResponseAsync(restaurantUser, cancellationToken).ConfigureAwait(false); return(result.Body); }
public CustomSqlMembershipProviderWrapper(RestaurantUser restaurantUser) { UserRepository = new RestaurantUserRepository(); RestaurantMembershipUser = restaurantUser; }
// // GET: /OAuth/ public ActionResult Authorize(string state) { if (TempData.Peek(TempDataStringResuorce.FacebookStateData) != null && CryptographyHelper.MatchOneTimeHash(TempData[TempDataStringResuorce.FacebookStateData].ToString(), state)) { var query = new { Code = Request.QueryString["code"], Error = Request.QueryString["error"], ErrorReason = Request.QueryString["error_reason"], ErrorDescription = Request.QueryString["error_description"] }; if (query.Error != null && query.ErrorReason == "user_denied") { TempData[TempDataStringResuorce.ActionResultNotification] = new ActionResultNotification { Message = "It looks like you didn't Allowed us to Sign you in through Facebook, you can try again", Result = false, State = ActionResultNotification.MessageState.Error }; return(RedirectToAction("LogIn", "Account")); } if (!query.Code.IsNullOrEmpty()) { var redirecturi = Url.AbsoluteAction("Authorize", "OAuth", null); var request = WebRequest.Create(FacebookHelper.GetAccessTokenUrl(AppConfigHelper.FacebookAppId, redirecturi, AppConfigHelper.FacebookAppSecret, query.Code)); try { var response = request.GetResponse(); var responsestream = response.GetResponseStream(); if (responsestream != null && response.ContentLength > 0) { var responsebody = new StreamReader(responsestream).ReadToEnd(); var token = new { AccessToken = responsebody.Split('&').First().Split('=').Last(), ExpiresOn = DateTime.UtcNow.AddSeconds(Convert.ToDouble(responsebody.Split('&').Last().Split('=').Last())) }; //Reuse varaibles to get User Details request = WebRequest.Create(FacebookHelper.GetFacebookNewUserUrl(token.AccessToken)); response = request.GetResponse(); responsestream = response.GetResponseStream(); if (responsestream != null) { responsebody = new StreamReader(responsestream).ReadToEnd(); var facebookuser = System.Web.Helpers.Json.Decode <FacebookUser>(responsebody); var facebookdetail = new FacebookUserDetail() { FacebookId = facebookuser.id, ExpiresOn = token.ExpiresOn, OAuthToken = token.AccessToken, ProfileLink = facebookuser.link }; //Try update with new facebookuser detail, if user dosent exist it will return false //Though Membership class returns a status of Duplicate user, for now I am going with it var restaurantuser = (RestaurantUser)null; if (!new FacebookUserDetailRepository().Update(facebookdetail)) { restaurantuser = new RestaurantUser(0, facebookuser.name, Guid.NewGuid()) { EmailId = facebookuser.email, FacebookDetail = facebookdetail, UserRole = UserBase.RestaurantUserRole.Customer }; MembershipCreateStatus createstatus; restaurantuser = MembershipService.CreateUser(restaurantuser, out createstatus); } if (restaurantuser == null) { restaurantuser = MembershipService.GetUser(facebookdetail.FacebookId.ToString(), true); } if (restaurantuser != null) { //If all goes well Log the user in FormsService.SignIn(restaurantuser, true); } } TempData[TempDataStringResuorce.ActionResultNotification] = new ActionResultNotification { Message = "You have been successully Logged in", Result = true, State = ActionResultNotification.MessageState.Information }; return(RedirectToAction("Index", "Home")); } } catch (WebException exception) { return(ProcessResponseErrorRedirect(redirecturi, exception)); } } } return(RedirectToAction("Index", "Home")); }
public async Task<ActionResult> RegisterRestaurant(RegisterRestaurantViewModel model) { if (this.ModelState.IsValid) { var db = new PlacesToEatDbContext(); var categoryId = db.Categories.Where(x => x.Name == "All").Select(x => x.Id).FirstOrDefault(); var user = new RestaurantUser { UserName = model.UserName, Email = model.Email, PhoneNumber = model.PhoneNumber, Name = model.Name, Address = model.Address, Latitude = model.Latitude, Longitude = model.Longitude, CategoryId = categoryId }; var result = await this.UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { await this.UserManager.AddToRoleAsync(user.Id, "Restaurant"); await this.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 this.RedirectToAction("Index", "Home"); } this.AddErrors(result); } // If we got this far, something failed, redisplay form return this.View(model); }
public async Task <OperationResult> Register(string userName, string email, string password, Person profile, string role) { if (await UserManager.FindByEmailAsync(email) != null) { return new OperationResult() { Success = false, Message = $"User {email} already exists" } } ; if (await UserManager.FindByNameAsync(userName) != null) { return new OperationResult() { Success = false, Message = $"User {userName} already exists" } } ; using var transactionScope = new TransactionScope(TransactionScopeOption.Required, transactionOptions, TransactionScopeAsyncFlowOption.Enabled); try { var createPersonOperation = await _pbo.CreateAsync(profile); if (!createPersonOperation.Success) { transactionScope.Dispose(); return(createPersonOperation); } var user = new RestaurantUser() { Email = email, UserName = userName, PersonId = profile.Id }; var result = await UserManager.CreateAsync(user, password); if (!result.Succeeded) { transactionScope.Dispose(); return(new OperationResult() { Success = false, Message = result.ToString() }); } var roleData = await RoleManager.FindByNameAsync(role); if (roleData == null) { transactionScope.Dispose(); return(new OperationResult() { Success = false, Message = $"Role {role} does not exist" }); } var roleOpt = await UserManager.AddToRoleAsync(user, role); if (!roleOpt.Succeeded) { transactionScope.Dispose(); return(new OperationResult() { Success = false, Message = roleOpt.ToString() }); } transactionScope.Complete(); return(new OperationResult() { Success = true }); } catch (Exception e) { return(new OperationResult() { Success = false, Exception = e }); } }
public void UpdateUser(RestaurantUser user) { _provider.UpdateUser(user); }
private static void SeedDefaultAdminRolesAndTwoUsers(IServiceProvider serviceProvider) { var db = serviceProvider.GetService <RestaurantAppContext>(); if (!db.Roles.AnyAsync().Result) { var roleManager = serviceProvider.GetService <RoleManager <IdentityRole> >(); Task.Run(async() => { var adminRole = AdminRole; var waiterRole = WaiterRole; var barmanRole = BarmanRole; var chefRole = ChefRole; await roleManager.CreateAsync(new IdentityRole { Name = adminRole }); await roleManager.CreateAsync(new IdentityRole { Name = waiterRole }); await roleManager.CreateAsync(new IdentityRole { Name = barmanRole }); await roleManager.CreateAsync(new IdentityRole { Name = chefRole }); }).Wait(); } if (!db.Users.AnyAsync().Result) { var userManager = serviceProvider.GetService <UserManager <RestaurantUser> >(); Task.Run(async() => { var adminPasswrod = "admin123"; var admin = new RestaurantUser() { UserName = "******", Email = "*****@*****.**", FirstName = "Admin", LastName = "Adminov" }; var waiterPassword = "******"; var waiter = new RestaurantUser() { UserName = "******", Email = "*****@*****.**", FirstName = "Ivan", LastName = "Pticata" }; var waiter2 = new RestaurantUser() { UserName = "******", Email = "*****@*****.**", FirstName = "Petko", LastName = "Bagera" }; var barmanPassword = "******"; var barman = new RestaurantUser() { UserName = "******", Email = "*****@*****.**", FirstName = "Pencho", LastName = "Slaveykov" }; var chefPassword = "******"; var chef = new RestaurantUser() { UserName = "******", Email = "*****@*****.**", FirstName = "Chef", LastName = "Manchev" }; await userManager.CreateAsync(admin, adminPasswrod); await userManager.AddToRoleAsync(admin, AdminRole); await userManager.CreateAsync(waiter, waiterPassword); await userManager.AddToRoleAsync(waiter, WaiterRole); await userManager.CreateAsync(waiter2, waiterPassword); await userManager.AddToRoleAsync(waiter2, WaiterRole); await userManager.CreateAsync(barman, barmanPassword); await userManager.AddToRoleAsync(barman, BarmanRole); await userManager.CreateAsync(chef, chefPassword); await userManager.AddToRoleAsync(chef, ChefRole); }).Wait(); db.SaveChanges(); } Console.WriteLine("Admin and default roles successfully seeded into database!"); }