Advertisement
Guest User

AccountController.cs

a guest
Jun 9th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.27 KB | None | 0 0
  1. using Microsoft.AspNet.Identity.EntityFramework;
  2. using Microsoft.AspNet.Identity.Owin;
  3. using Newtonsoft.Json.Linq;
  4. using Omu.ValueInjecter;
  5. using RestSharp;
  6. using System;
  7. using System.Collections.Generic;
  8. using System.IO;
  9. using System.Linq;
  10. using System.Net;
  11. using System.Web;
  12. using System.Web.Mvc;
  13. using System.Linq;
  14. using TeaSk.Application.Infrastructure;
  15. using TeaSk.Domain.Entities;
  16. using TeaSk.Web.Models;
  17.  
  18. namespace TeaSk.Web.Controllers
  19. {
  20. public class AccountController : Controller
  21. {
  22. private IService<User> _userService { get; set; }
  23.  
  24. public AccountController(IService<User> userService)
  25. {
  26. _userService = userService;
  27. }
  28.  
  29. // GET: Account\
  30. public ActionResult Login()
  31. {
  32. return View();
  33. }
  34.  
  35. [HttpPost]
  36. public ActionResult Login(string username, string password)
  37. {
  38. var user = _userService.GetFirst(x => x.Username == username && x.Password == password);
  39. if (user != null)
  40. {
  41. Session["User"] = user;
  42. return RedirectToAction("Index", "Home");
  43. }
  44. return View();
  45. }
  46.  
  47. public ActionResult ExternalLogin(string code, string state)
  48. {
  49. //Get Accedd Token
  50. var client = new RestClient("https://www.linkedin.com/oauth/v2/accessToken");
  51. var request = new RestRequest(Method.POST);
  52. request.AddParameter("grant_type", "authorization_code");
  53. request.AddParameter("code", code);
  54. request.AddParameter("redirect_uri", "http://localhost:54100/account/externallogin");
  55. request.AddParameter("client_id", "86solwux7xapvc");
  56. request.AddParameter("client_secret", "6Pp5PXP6IVNhIIV9");
  57. IRestResponse response = client.Execute(request);
  58. var accessToken = response.Content;
  59.  
  60. var clientEmail = new RestClient("https://www.linkedin.com/v1/people/~:(emailAddress)");
  61. var requestEmail = new RestRequest(Method.POST);
  62. request.AddParameter("ouath2_access_token", accessToken);
  63. request.AddParameter("format", "json");
  64. IRestResponse responseEmail = client.Execute(request);
  65. var email = responseEmail.Content;
  66.  
  67. var user = _userService.GetFirst(x => x.Email == email);
  68. if (user == null)
  69. return RedirectToAction("Login", "Account");
  70.  
  71. Session["User"] = user;
  72.  
  73. return RedirectToAction("Index", "Home");
  74. }
  75.  
  76. public ActionResult GithubCallback(string code, string state)
  77. {
  78.  
  79. var request = (HttpWebRequest)WebRequest.Create("https://github.com/login/oauth/access_token?client_id=393bc52e43ee23613eca&client_secret=7070d0523a2da7420409d3bddace0000e0b6fe1a&code=" + code);
  80. request.Accept = "application/json";
  81. var response = new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd();
  82. var accoessToken = (string)((dynamic)JObject.Parse(response)).access_token;
  83.  
  84. var requestUser = (HttpWebRequest)WebRequest.Create("https://api.github.com/user/emails?access_token=" + accoessToken);
  85. requestUser.UserAgent = "Anything";
  86. var responseUser = new StreamReader(requestUser.GetResponse().GetResponseStream()).ReadToEnd();
  87. var gitUser = (string)((dynamic)JArray.Parse(responseUser))[0].email;
  88.  
  89. var user = _userService.GetFirst(x => x.Email == gitUser);
  90. if (user == null)
  91. return RedirectToAction("Index", "Home");
  92.  
  93. var requestRepo = (HttpWebRequest)WebRequest.Create("https://api.github.com/user/repos?access_token=" + accoessToken);
  94. requestRepo.UserAgent = "Anything";
  95. var responseRepo = new StreamReader(requestRepo.GetResponse().GetResponseStream()).ReadToEnd();
  96. var repositories = ((dynamic)JArray.Parse(responseRepo));
  97. var list = new List<string>();
  98. foreach (var repo in repositories)
  99. {
  100. var language = (string)repo.language;
  101. if (!list.Contains(language) && !string.IsNullOrEmpty(language))
  102. list.Add(language);
  103. }
  104. var newSkills = list.Where(x => !user.Skills.ToList().Exists(y => y.Name == x));
  105. foreach (var skill in newSkills)
  106. {
  107. user.Skills.Add(new Skills { Name = skill });
  108. }
  109. _userService.Update(user);
  110. Session["User"] = user;
  111. return RedirectToAction("Index", "Home");
  112. }
  113.  
  114. public ActionResult StackCallback(string code, string state)
  115. {
  116. //Get Accedd Token
  117. var client = new RestClient("https://stackexchange.com/oauth/access_token");
  118. var request = new RestRequest(Method.POST);
  119. request.AddParameter("code", code);
  120. request.AddParameter("redirect_uri", "http://localhost:54100/account/stackcallback");
  121. request.AddParameter("client_id", "10067");
  122. request.AddParameter("client_secret", "u0u4qfR6veEhRphyw3O0QA((");
  123. IRestResponse response = client.Execute(request);
  124. var accessToken = response.Content;
  125.  
  126. var clientEmail = new RestClient("https://www.linkedin.com/v1/people/~:(emailAddress)");
  127. var requestEmail = new RestRequest(Method.POST);
  128. request.AddParameter("ouath2_access_token", accessToken);
  129. request.AddParameter("format", "json");
  130. IRestResponse responseEmail = client.Execute(request);
  131. var email = responseEmail.Content;
  132.  
  133. var user = _userService.GetFirst(x => x.Email == email);
  134. if (user == null)
  135. return RedirectToAction("Login", "Account");
  136.  
  137. Session["User"] = user;
  138.  
  139. return RedirectToAction("Index", "Home");
  140. }
  141.  
  142. public ActionResult Register()
  143. {
  144. return View();
  145. }
  146.  
  147. [HttpPost]
  148. public ActionResult Register(string name, string surname, DateTime birthDate, string phone, string email, string username, string password)
  149. {
  150. var user = _userService.GetFirst(x => x.Email == email && x.Username == username);
  151. if (user == null)
  152. {
  153. _userService.Add(new User
  154. {
  155. Name = name,
  156. Surname = surname,
  157. BirthDate = birthDate,
  158. Email = email,
  159. Phone = phone,
  160. Username = username,
  161. Password = password
  162. });
  163. Session["User"] = user;
  164. return RedirectToAction("Index", "Home");
  165. }
  166. else
  167. ViewBag.Message = "Account already in use!";
  168. return View();
  169. }
  170.  
  171. public ActionResult Attend(int? userid, int? eventId)
  172. {
  173. //var user = (User)Session["User"];
  174. var user = _userService.GetByID(((User)Session["User"]).Id);
  175. user.Points += 10;
  176. _userService.Update(user);
  177. Session["User"] = user;
  178. return null;
  179. }
  180. }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement