public LogOnModel Login(string returnUrl, string AbsoluteUri, string oauth_token, string oauth_verifier, string referral,string userType) { var userData = new LogOnModel(); var _db = new ZestorkContainer(); string authLink = string.Empty; if (oauth_token != null && oauth_verifier != null) { var linkedInApiDataResponse = _db.LinkedInAuthApiDatas.SingleOrDefault(x => x.oauth_Token == oauth_token); if (linkedInApiDataResponse != null) { GetAccessToken(oauth_token, linkedInApiDataResponse.oauth_TokenSecret, oauth_verifier); String UserDetailString = RequestProfile(_oauth.Token, _oauth.TokenSecret, oauth_verifier); var UserDetails = JsonConvert.DeserializeObject<linkedinUserDataWrapper>(Convert.ToString(UserDetailString)); _db.LinkedInAuthApiDatas.Attach(linkedInApiDataResponse); _db.LinkedInAuthApiDatas.Remove(linkedInApiDataResponse); //_db.SaveChanges(); userData.User = new User(); if (_db.Users.Any(x => x.Username == UserDetails.emailAddress)) { Users user = _db.Users.SingleOrDefault(x => x.Username == UserDetails.emailAddress); //user is already registered userData.User.FirstName = user.FirstName; userData.User.LastName = user.LastName; userData.User.Username = user.Username; userData.User.Gender = user.gender; userData.User.ImageUrl = user.ImageUrl; userData.statusCode = "200"; } else { // add user in database String ID = Guid.NewGuid().ToString(); userData.User.FirstName = UserDetails.firstName; userData.User.LastName = UserDetails.lastName; userData.User.Username = UserDetails.emailAddress; try { userData.User.Email = UserDetails.emailAddress; } catch (Exception) { userData.User.Email = "NA"; } userData.User.Gender = "NA"; userData.User.ImageUrl = "NA"; userData.User.Username = UserDetails.emailAddress; var user = new Users { Username = UserDetails.emailAddress, Password = Guid.NewGuid().ToString(), Source = "linkedin", isActive = "true", Type = userType != null ? userType : "NA", guid = Guid.NewGuid().ToString(), FirstName = UserDetails.firstName, LastName = UserDetails.lastName, gender = "NA", ImageUrl = "NA" }; _db.Users.Add(user); try { _db.SaveChanges(); userData.statusCode = "200"; } catch (DbEntityValidationException e) { dbContextException dbContextException = new CommonMethods.dbContextException(); dbContextException.logDbContextException(e); throw; } } } } else { authLink = CreateAuthorization(); var linkedInApiData = new LinkedInAuthApiData { oauth_Token = _oauth.Token, oauth_TokenSecret = _oauth.TokenSecret, oauth_verifier = "" }; _db.LinkedInAuthApiDatas.Add(linkedInApiData); try { _db.SaveChanges(); } catch (DbEntityValidationException e) { dbContextException dbContextException = new CommonMethods.dbContextException(); dbContextException.logDbContextException(e); throw; } userData.ReturnUrl = authLink; } return userData; }
public LogOnModel Login(string returnUrl, string code, string referral,string userType) { var _db = new ZestorkContainer(); var userData = new LogOnModel(); string app_id = ""; string app_secret = ""; app_id = ConfigurationManager.AppSettings["googleAppID"].ToString(); app_secret = ConfigurationManager.AppSettings["googleAppSecret"].ToString(); //if (returnUrl.Contains("zestork.pcongo")) //{ // app_id = ConfigurationManager.AppSettings["googleAppIDZestork"].ToString(); // app_secret = ConfigurationManager.AppSettings["googleAppSecretZestork"].ToString(); //} //else //{ // app_id = ConfigurationManager.AppSettings["googleAppID"].ToString(); // app_secret = ConfigurationManager.AppSettings["googleAppSecret"].ToString(); //} string scope = "email%20profile"; if (code == null) { userData.ReturnUrl = (string.Format( "https://accounts.google.com/o/oauth2/auth?scope={0}&state=%2Fprofile&redirect_uri={1}&response_type=code&client_id={2}&approval_prompt=force", scope, returnUrl, app_id)); logger.Info(userData.ReturnUrl); return userData; } else { string access_token = getGoogleAuthToken(returnUrl, scope, code, app_id, app_secret); String URI = "https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + access_token; logger.Info(URI); WebClient webClient = new WebClient(); Stream stream = webClient.OpenRead(URI); string googleUserDetailString; /*I have not used any JSON parser because I do not want to use any extra dll/3rd party dll*/ using (StreamReader br = new StreamReader(stream)) { googleUserDetailString = br.ReadToEnd(); } var googleUserDetails = JsonConvert.DeserializeObject<googleUserDetails>(Convert.ToString(googleUserDetailString)); userData.User = new User(); if (_db.Users.Any(x => x.Username == googleUserDetails.email)) { Users user = _db.Users.SingleOrDefault(x => x.Username == googleUserDetails.email); //user is already registered userData.User.FirstName = user.FirstName; userData.User.LastName = user.LastName; userData.User.Username = user.Username; userData.User.Gender = user.gender; userData.User.ImageUrl = user.ImageUrl; userData.statusCode = "200"; } else { // add user in database String ID = Guid.NewGuid().ToString(); userData.User.FirstName = googleUserDetails.given_name; userData.User.LastName = googleUserDetails.family_name; try { userData.User.Username = googleUserDetails.email; userData.User.Email = googleUserDetails.email; } catch (Exception) { userData.User.Username = "******"; userData.User.Email = "NA"; } try { userData.User.Gender = googleUserDetails.gender; } catch (Exception) { userData.User.Gender = "NA"; throw; } try { userData.User.ImageUrl = googleUserDetails.picture; } catch (Exception) { userData.User.ImageUrl = "NA"; } if (userData.User.Gender == null) userData.User.Gender = "NA"; logger.Info(JsonConvert.SerializeObject(userData)); var user = new Users { Username = userData.User.Email, Password = Guid.NewGuid().ToString(), Source = "google", isActive = "true", Type = userType != null ? userType : "NA", guid = Guid.NewGuid().ToString(), FirstName = userData.User.FirstName, LastName = userData.User.LastName, gender = userData.User.Gender, ImageUrl = userData.User.ImageUrl, }; _db.Users.Add(user); try { _db.SaveChanges(); userData.statusCode = "200"; } catch (DbEntityValidationException e) { dbContextException dbContextException = new CommonMethods.dbContextException(); dbContextException.logDbContextException(e); throw; } } } return userData; }
public ActionResult CreateAccount(CreateAccountRequest req) { logger.Info("new account creation request"); var _db = new ZestorkContainer(); String emailRetVal = String.Empty; //if user already exists if(_db.Users.Any(x=>x.Username==req.userName)) return Json(new { code="402",msg="User Already Exists" }); String ID = Guid.NewGuid().ToString(); var user = new Users { Username = req.userName, Password = req.password, Source = req.source, isActive = "false", Type = req.type, guid = Guid.NewGuid().ToString(), FirstName = req.firstName, LastName = req.lastName, gender = "NA", ImageUrl = "NA" }; _db.Users.Add(user); if (req.referral != null && req.referral != "") { var referral = new RecommendedBy { RecommendedFrom = req.referral, RecommendedTo = req.userName }; _db.RecommendedBies.Add(referral); } if (req.type == "client") { var clientDetails = new ClientDetails { Username = req.userName, CompanyName = req.CompanyName }; _db.ClientDetails.Add(clientDetails); } var ValidateUserKey = new ValidateUserKey { Username = req.userName, guid = ID }; _db.ValidateUserKeys.Add(ValidateUserKey); try { _db.SaveChanges(); sendAccountCreationValidationEmail sendAccountCreationValidationEmail = new sendAccountCreationValidationEmail(); emailRetVal = sendAccountCreationValidationEmail.sendAccountCreationValidationEmailMessage(req.userName, ID,Request); } catch (DbEntityValidationException e) { dbContextException.logDbContextException(e); throw; } //Users User = _db.Users.SingleOrDefault(x => x.Username == req.userName); //ValidateUserKey key = _db.ValidateUserKeys.SingleOrDefault(x => x.Username == req.userName); return Json(new { code="200",msg="successfully created account" }); }
private LogOnModel checkFacebookAuthorization(string returnUrl, string code, string userType) { var userData = new LogOnModel(); try { var _db = new ZestorkContainer(); string app_id = string.Empty; string app_secret = string.Empty; app_id = ConfigurationManager.AppSettings["FacebookAppID"].ToString(); app_secret = ConfigurationManager.AppSettings["FacebookAppSecret"].ToString(); string scope = ""; if (code == null) { userData.ReturnUrl = (string.Format( "https://graph.facebook.com/oauth/authorize?client_id={0}&redirect_uri={1}&scope={2}", app_id, returnUrl, scope)); return userData; } else { string access_token = getFacebookAuthToken(returnUrl, scope, code,app_id,app_secret); var client = new FacebookClient(access_token); dynamic me = client.Get("me"); String userName = Convert.ToString(me.username); userData.User = new User(); if (_db.Users.Any(x => x.Username == userName + "@facebook.com")) { Users user = _db.Users.SingleOrDefault(x => x.Username == userName + "@facebook.com"); //user is already registered userData.User.FirstName = user.FirstName; userData.User.LastName = user.LastName; userData.User.Username = user.Username; userData.User.Gender = user.gender; userData.User.ImageUrl = user.ImageUrl; userData.statusCode = "200"; } else { // add user in database String ID = Guid.NewGuid().ToString(); String ImageUrl = FacebookService.GetPictureUrl(userName); userData.User.FirstName = me.first_name; userData.User.LastName = me.last_name; userData.User.Username = me.username; userData.User.ImageUrl = ImageUrl; userData.User.Username = userName + "@facebook.com"; var user = new Users { Username = userName + "@facebook.com", Password = Guid.NewGuid().ToString(), Source = "facebook", isActive = "true", Type = userType!=null?userType:"NA", guid = Guid.NewGuid().ToString(), FirstName = me.first_name, LastName = me.last_name, gender = "NA", ImageUrl = ImageUrl }; _db.Users.Add(user); try { _db.SaveChanges(); userData.statusCode = "200"; } catch (DbEntityValidationException e) { dbContextException dbContextException = new CommonMethods.dbContextException(); dbContextException.logDbContextException(e); throw; } } } } catch (Exception ex) { logger.Error("facebook login error", ex); throw; } return userData; }