public IActionResult SaveProfil(UserChoiceViewModel userChoice) { Preference p = new Preference(); p.AgeMax = (short)userChoice.Age; p.AgeMin = 18; AspNetUser user = _context.AspNetUsers.Where(b => b.UserName == userChoice.UserName).SingleOrDefault(); p.Id = user.Id; p.SexualityId = userChoice.SexualityId; _context.Preferences.Add(p); PreferenceReligion prefReligion = new PreferenceReligion(); prefReligion.ReligionId = userChoice.ReligionId; prefReligion.PreferenceId = p.PreferenceId; p.PreferenceReligions.Add(prefReligion); PreferenceCorpulence prefCorpulence = new PreferenceCorpulence(); prefCorpulence.CorpulenceId = userChoice.CorpulenceId; prefCorpulence.PreferenceId = p.PreferenceId; p.PreferenceCorpulences.Add(prefCorpulence); PreferenceHairColor preferenceHairColor = new PreferenceHairColor(); preferenceHairColor.HairColorId = userChoice.HairColorId; preferenceHairColor.PreferenceId = p.PreferenceId; p.PreferenceHairColors.Add(preferenceHairColor); PreferenceHairSize preferenceHairSize = new PreferenceHairSize(); preferenceHairSize.HairSizeId = userChoice.HairSizeId; preferenceHairSize.PreferenceId = p.PreferenceId; p.PreferenceHairSizes.Add(preferenceHairSize); PreferenceStyle preferenceStyle = new PreferenceStyle(); preferenceStyle.StyleId = userChoice.StyleId; preferenceStyle.PreferenceId = p.PreferenceId; p.PreferenceStyles.Add(preferenceStyle); try { _context.SaveChanges(); } catch (Exception) { return(BadRequest()); } return(NoContent()); }
// Permet d'afficher l'inscription avec plusieurs données public async Task <IActionResult> SignUp() { string accessToken = await HttpContext.GetTokenAsync("access_token"); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); string sexes = await client.GetStringAsync(Configuration["URLAPI"] + "api/Data/Sex"); string corpulences = await client.GetStringAsync(Configuration["URLAPI"] + "api/Data/corpulences"); string hairSize = await client.GetStringAsync(Configuration["URLAPI"] + "api/Data/hairSize"); string hairColor = await client.GetStringAsync(Configuration["URLAPI"] + "api/Data/hairColor"); string sexuality = await client.GetStringAsync(Configuration["URLAPI"] + "api/Data/sexuality"); string styles = await client.GetStringAsync(Configuration["URLAPI"] + "api/Data/styles"); string religions = await client.GetStringAsync(Configuration["URLAPI"] + "api/Data/religions"); List <Religion> resultReligion = JsonConvert.DeserializeObject <List <Religion> >(religions); List <Sex> resultSexes = JsonConvert.DeserializeObject <List <Sex> >(sexes); List <Corpulence> resultCorpulences = JsonConvert.DeserializeObject <List <Corpulence> >(corpulences); List <HairColor> resultHairColors = JsonConvert.DeserializeObject <List <HairColor> >(hairColor); List <HairSize> resultHairSizes = JsonConvert.DeserializeObject <List <HairSize> >(hairSize); List <Sexuality> resultSexualities = JsonConvert.DeserializeObject <List <Sexuality> >(sexuality); List <Style> resultStyle = JsonConvert.DeserializeObject <List <Style> >(styles); ViewData["sexes"] = resultSexes; ViewData["corpulences"] = resultCorpulences; ViewData["hairColors"] = resultHairColors; ViewData["hairSizes"] = resultHairSizes; ViewData["sexualities"] = resultSexualities; ViewData["styles"] = resultStyle; ViewData["religions"] = resultReligion; string ip = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(); _logger.LogInformation("A User is trying to sign up with ip : " + ip); UserTrace trace = new UserTrace { Logdate = DateTime.Now, Ipadress = ip, Pagevisited = "SignUp : A User is trying to sign up" }; _context.UserTraces.Add(trace); _context.SaveChanges(); return(View()); }
public async Task <IActionResult> PutContactRequest(short id, ContactRequest contactRequest) { if (id != contactRequest.RequestId) { return(BadRequest()); } _context.Entry(contactRequest).State = EntityState.Modified; try { _context.SaveChanges(); await _context.SaveChangesAsync(); } catch (DbUpdateConcurrencyException) { if (!ContactRequestExists(id)) { return(NotFound()); } else { throw; } } return(NoContent()); }
public async Task <IActionResult> Like([FromBody] string username) { string accessToken = await HttpContext.GetTokenAsync("access_token"); AspNetUser user = null; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); string userString = await client.GetStringAsync(Configuration["URLAPI"] + "api/Account/getUserInfo"); user = JsonConvert.DeserializeObject <AspNetUser>(userString); UserLike ul = new UserLike(); AspNetUser userLiked = _context.AspNetUsers.Where(d => d.UserName == username).Single(); ul.Id = user.Id; ul.Id1 = userLiked.Id; ul.Ignored = false; try { //cherche si il existe une conversation entre les deux personnes Talk talk = _context.Talks.Where(t => t.Id == user.Id && t.IdUser2Talk == userLiked.Id).SingleOrDefault(); if (talk == null) { talk = _context.Talks.Where(t => t.Id == userLiked.Id && t.IdUser2Talk == user.Id).SingleOrDefault(); } //crée une conversation si la conversation n'existe pas if (talk == null) { Talk newtalk = new Talk { Id = user.Id, IdUser2Talk = userLiked.Id, TalkName = user.NormalizedUserName + userLiked.NormalizedUserName }; _context.Talks.Add(newtalk); await _context.SaveChangesAsync(); } _context.UserLikes.Add(ul); _context.SaveChanges(); return(Ok()); } catch (Exception) { return(BadRequest()); } }
public async Task <IActionResult> PostPicture(List <IFormFile> files) { string id = ""; try { // Il faut utiliser le Claim pour retrouver l'identifiant de l'utilisateur id = User.Claims.Where(c => c.Type == "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier").SingleOrDefault().Value; } catch (Exception) { return(BadRequest()); } string userName = await _context.AspNetUsers.Where(a => a.Id == id).Select(a => a.UserName).SingleOrDefaultAsync(); try { string folder = "Upload"; foreach (var file in files) { if (file.Length > 0) { if (!Directory.Exists(Path.Combine(_environnement.WebRootPath, folder))) { Directory.CreateDirectory(Path.Combine(_environnement.WebRootPath, folder)); } string filename = userName + DateTime.Now.ToString("_yyyy-MM-dd_HH-mm-ss") + file.FileName; using (FileStream fileStream = System.IO.File.Create(Path.Combine(_environnement.WebRootPath, folder, filename))) { file.CopyTo(fileStream); fileStream.Flush(); _context.Pictures.Add(new Picture { Id = id, PictureView = folder + "/" + filename }); _context.SaveChanges(); } } } return(Ok()); } catch (Exception) { return(BadRequest()); } }
public async Task <ActionResult <Ad> > PostAd(AdPost adPost) { string folder = "Ads"; AdInput ad = new AdInput(); ad.Id = adPost.Id; ad.Titre = adPost.Titre; ad.Description = adPost.Description; ad.Link = adPost.Link; byte[] data = Convert.FromBase64String(adPost.file); var stream = new MemoryStream(data); IFormFile file = new FormFile(stream, 0, data.Length, adPost.name, adPost.fileName) { Headers = new HeaderDictionary(), ContentType = adPost.ContentType, ContentDisposition = adPost.ContentDisposition }; ad.file = file; if (ad.file.Length > 0) { if (!Directory.Exists(Path.Combine(_environnement.WebRootPath, folder))) { Directory.CreateDirectory(Path.Combine(_environnement.WebRootPath, folder)); } string filename = "_ad" + DateTime.Now.ToString("_yyyy-MM-dd_HH-mm-ss_") + ad.file.FileName; using (FileStream fileStream = System.IO.File.Create(Path.Combine(_environnement.WebRootPath, folder, filename))) { ad.file.CopyTo(fileStream); fileStream.Flush(); _context.Ads.Add(new Ad { Id = ad.Id, Titre = ad.Titre, Description = ad.Description, AdView = folder + "/" + filename, Link = ad.Link }); _context.SaveChanges(); } await _context.SaveChangesAsync(); } return(CreatedAtAction("GetAd", new { id = ad.Id }, ad)); }
public async Task <ActionResult> QuizSubmit(int[] answer) { string accessToken = await HttpContext.GetTokenAsync("access_token"); AspNetUser user = null; HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); //Récupération de l'utilisateur courant string userString = await client.GetStringAsync(Configuration["URLAPI"] + "api/Account/getUserInfo"); user = JsonConvert.DeserializeObject <AspNetUser>(userString); int query = (from item in answer group item by item into g orderby g.Count() descending select g.Key).First(); UserProfil userProfil = new UserProfil(); userProfil.ProfilId = (short)query; userProfil.Id = user.Id; user.QuizCompleted = true; try { _context.AspNetUsers.Update(user); _context.UserProfils.Add(userProfil); _context.SaveChanges(); return(NoContent()); } catch (Exception) { return(BadRequest()); } }
public static void Initialize(IServiceProvider serviceProvider) { using (var context = new LoveMirroringContext( serviceProvider.GetRequiredService <DbContextOptions <LoveMirroringContext> >())) { // Look for any board games. if (!context.Sexes.Any()) { context.Sexes.AddRange( new Sex { SexeId = 1, SexeName = "Masculin" }, new Sex { SexeId = 2, SexeName = "Féminin" }); } context.SaveChanges(); } }
public async Task <IActionResult> Login(LoginInputModel model, string button) { // check if we are in the context of an authorization request var context = await _interaction.GetAuthorizationContextAsync(model.ReturnUrl); // the user clicked the "cancel" button if (button != "login") { if (context != null) { // if the user cancels, send a result back into IdentityServer as if they // denied the consent (even if this client does not require consent). // this will send back an access denied OIDC error response to the client. await _interaction.GrantConsentAsync(context, ConsentResponse.Denied); // we can trust model.ReturnUrl since GetAuthorizationContextAsync returned non-null if (await _clientStore.IsPkceClientAsync(context.ClientId)) { // if the client is PKCE then we assume it's native, so this change in how to // return the response is for better UX for the end user. return(this.LoadingPage("Redirect", model.ReturnUrl)); } return(Redirect(model.ReturnUrl)); } else { // since we don't have a valid context, then we just go back to the home page return(Redirect("~/")); } } if (ModelState.IsValid) { var result = await _signInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberLogin, lockoutOnFailure : true); if (result.Succeeded) { string ip = _accessor.ActionContext.HttpContext.Connection.RemoteIpAddress.ToString(); _logger.LogInformation("A User signs in with ip : " + ip); string userId = _LMcontext.AspNetUsers.Where(u => u.UserName == model.Username).Select(u => u.Id).SingleOrDefault(); UserTrace trace = new UserTrace { Logdate = DateTime.Now, Ipadress = ip, Pagevisited = "Login : A User signs in ", Id = userId }; _LMcontext.UserTraces.Add(trace); _LMcontext.SaveChanges(); var user = await _userManager.FindByNameAsync(model.Username); var resultEmailConfirmed = await _userManager.IsEmailConfirmedAsync(user); if (!resultEmailConfirmed) { throw new Exception("Le mail doit être validé"); } var resultPhoneConfirmed = await _userManager.IsPhoneNumberConfirmedAsync(user); if (!resultPhoneConfirmed) { return(Redirect("~/Account/VerifyPhone")); } await _events.RaiseAsync(new UserLoginSuccessEvent(user.UserName, user.Id, user.UserName, clientId : context?.ClientId)); if (context != null) { if (await _clientStore.IsPkceClientAsync(context.ClientId)) { // if the client is PKCE then we assume it's native, so this change in how to // return the response is for better UX for the end user. return(this.LoadingPage("Redirect", model.ReturnUrl)); } // we can trust model.ReturnUrl since GetAuthorizationContextAsync returned non-null return(Redirect(model.ReturnUrl)); } // request for a local page if (Url.IsLocalUrl(model.ReturnUrl)) { return(Redirect(model.ReturnUrl)); } else if (string.IsNullOrEmpty(model.ReturnUrl)) { return(Redirect("~/")); } else { // user might have clicked on a malicious link - should be logged throw new Exception("invalid return URL"); } } if (result.IsLockedOut) { ApplicationUser user = await _userManager.FindByNameAsync(model.Username); ViewData["Lockout"] = await _userManager.GetLockoutEndDateAsync(user); return(View("Banned")); } await _events.RaiseAsync(new UserLoginFailureEvent(model.Username, "invalid credentials", clientId : context?.ClientId)); ModelState.AddModelError(string.Empty, AccountOptions.InvalidCredentialsErrorMessage); } // something went wrong, show form with error var vm = await BuildLoginViewModelAsync(model); return(View(vm)); }
public async Task <IActionResult> UpdateSong([FromBody] string songname) { AspNetUser user = null; string accessToken = await HttpContext.GetTokenAsync("access_token"); HttpClient client = new HttpClient(); client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", accessToken); // Récurération des données et convertion des données dans le bon type string content = await client.GetStringAsync(Configuration["URLAPI"] + "api/Account/getUserInfo"); user = JsonConvert.DeserializeObject <AspNetUser>(content); Preference p = _context.Preferences .Include(x => x.PreferenceMusics) .Where(x => x.Id == user.Id) .SingleOrDefault(); PreferenceMusic pM = p.PreferenceMusics.FirstOrDefault(); UserMusic currentUserMusic = _context.UserMusics.Where(x => x.Id == user.Id).SingleOrDefault(); string[] song = songname.Split('-'); Music music = new Music(); music.MusicName = song[0]; music.ArtistName = song[1]; Music search = _context.Musics.Where(x => x.MusicName.Equals(music.MusicName)).SingleOrDefault(); if (search == null) { _context.Musics.Add(music); _context.SaveChanges(); } else { music = search; } try { _context.PreferenceMusics.Remove(pM); _context.UserMusics.Remove(currentUserMusic); _context.SaveChanges(); pM.MusicId = music.MusicId; _context.PreferenceMusics.Add(pM); UserMusic userMusic = new UserMusic(); userMusic.Id = user.Id; userMusic.MusicId = music.MusicId; _context.UserMusics.Add(userMusic); _context.SaveChanges(); return(Ok()); } catch (Exception) { return(BadRequest()); } }
private async Task <ApplicationUser> AutoProvisionUserAsync(string provider, string providerUserId, IEnumerable <Claim> claims) { // create a list of claims that we want to transfer into our store var filtered = new List <Claim>(); // user's display name var name = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.Name)?.Value ?? claims.FirstOrDefault(x => x.Type == ClaimTypes.Name)?.Value; if (name != null) { filtered.Add(new Claim(JwtClaimTypes.Name, name)); } else { var first = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.GivenName)?.Value ?? claims.FirstOrDefault(x => x.Type == ClaimTypes.GivenName)?.Value; var last = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.FamilyName)?.Value ?? claims.FirstOrDefault(x => x.Type == ClaimTypes.Surname)?.Value; if (first != null && last != null) { filtered.Add(new Claim(JwtClaimTypes.Name, first + " " + last)); } else if (first != null) { filtered.Add(new Claim(JwtClaimTypes.Name, first)); } else if (last != null) { filtered.Add(new Claim(JwtClaimTypes.Name, last)); } } HttpClient client = new HttpClient(); // email var email = claims.FirstOrDefault(x => x.Type == JwtClaimTypes.Email)?.Value ?? claims.FirstOrDefault(x => x.Type == ClaimTypes.Email)?.Value; if (email != null) { filtered.Add(new Claim(JwtClaimTypes.Email, email)); } short sexeId = 0; if (claims.FirstOrDefault(x => x.Type.Contains("gender")).Value.Contains("male")) { sexeId = 1; } else { sexeId = 2; } var user = new ApplicationUser { UserName = ("fb" + claims.FirstOrDefault(x => x.Type.Contains("givenname")).Value + claims.FirstOrDefault(x => x.Type.Contains("surname")).Value).ToLower(), Sexeid = sexeId, Birthday = DateTime.ParseExact(claims.FirstOrDefault(x => x.Type.Contains("dateofbirth")).Value, "MM/dd/yyyy", null), Email = claims.FirstOrDefault(x => x.Type.Contains("email")).Value, HairColorId = 1, CorpulenceId = 1, HairSizeId = 1, SexualityId = 1, ReligionId = 1, EmailConfirmed = true, LastName = claims.FirstOrDefault(x => x.Type.Contains("surname")).Value, Firstname = claims.FirstOrDefault(x => x.Type.Contains("givenname")).Value, AccountCompleted = false, IsFacebookAccount = true }; int cptUser = _context.AspNetUsers.Where(x => x.UserName.Contains(user.UserName)).Count(); if (cptUser != 0) { user.UserName += (cptUser + 1).ToString(); } user.UserName = RemoveSpecialCharacters(user.UserName); var identityResult = await _userManager.CreateAsync(user); if (!identityResult.Succeeded) { throw new Exception(identityResult.Errors.First().Description); } UserStyle userStyle = new UserStyle(); userStyle.Id = user.Id; userStyle.StyleId = 1; AspNetUserRole aspNetUserRole = new AspNetUserRole(); aspNetUserRole.UserId = user.Id; aspNetUserRole.RoleId = "Utilisateur"; _context.AspNetUserRoles.Add(aspNetUserRole); _context.UserStyles.Add(userStyle); _context.SaveChanges(); if (filtered.Any()) { identityResult = await _userManager.AddClaimsAsync(user, filtered); if (!identityResult.Succeeded) { throw new Exception(identityResult.Errors.First().Description); } } identityResult = await _userManager.AddLoginAsync(user, new UserLoginInfo(provider, providerUserId, provider)); if (!identityResult.Succeeded) { throw new Exception(identityResult.Errors.First().Description); } return(user); }