public ApiEw CreateApiEwLogin(ApiEw ew) //Inserta el registro en la tabla ApiEwLogin { connection.Open(); var cmd = connection.CreateCommand() as SqlCommand; cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "Earthwatcher_CreateApiEwLogin"; cmd.Parameters.Add(new SqlParameter("@Api", ew.Api)); cmd.Parameters.Add(new SqlParameter("@UserId", ew.UserId)); cmd.Parameters.Add(new SqlParameter("@NickName", ew.NickName)); cmd.Parameters.Add(new SqlParameter("@SecretToken", ew.SecretToken)); cmd.Parameters.Add(new SqlParameter("@AccessToken", ew.AccessToken)); cmd.Parameters.Add(new SqlParameter("@Mail", ew.Mail)); var idParameter = new SqlParameter("@ID", SqlDbType.Int) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(idParameter); cmd.ExecuteNonQuery(); var id = (int)idParameter.Value; ew.Id = id; connection.Close(); return(ew); }
public Startup(IDictionary <string, string> initParams) { InitializeComponent(); if (initParams.ContainsKey("authtoken")) { string[] authtoken = initParams["authtoken"].Split(':'); if (authtoken[0] == "true") { EarthwatcherRequests earthwatcherRequest = new EarthwatcherRequests(new Uri(Application.Current.Host.Source, "/api").ToString()); earthwatcherRequest.EarthwatcherReceived += earthwatcherRequest_EarthwatcherReceived; earthwatcherRequest.GetLogged(); } } else if (initParams.ContainsKey("api")) { ApiEw ew = new ApiEw(); ew.Api = initParams["api"]; ew.UserId = initParams["userId"]; ew.NickName = initParams["nickName"]; ew.AccessToken = initParams["accessToken"]; if (initParams.ContainsKey("secretToken")) { ew.SecretToken = initParams["secretToken"]; } EarthwatcherRequests earthwatcherRequest = new EarthwatcherRequests(new Uri(Application.Current.Host.Source, "/api").ToString()); earthwatcherRequest.LoginWithApi(ew); earthwatcherRequest.ApiEwReceived += earthwatcherRequest_ApiEwReceived; } if (initParams.ContainsKey("credentials")) { string[] credentials = initParams["credentials"].Split(':'); if (credentials.Length >= 2 && !string.IsNullOrEmpty(credentials[0]) && !string.IsNullOrEmpty(credentials[1])) { geohexcode = credentials[2].Trim(); EarthwatcherRequests earthwatcherRequest = new EarthwatcherRequests(new Uri(Application.Current.Host.Source, "/api").ToString()); earthwatcherRequest.EarthwatcherReceived += earthwatcherRequest_EarthwatcherReceived; password = credentials[1].Trim(); earthwatcherRequest.GetByName(credentials[0].Trim(), password); } else { Earthwatchers.UI.App.BackToLoginPage(); } } }
public void LoginWithApi(ApiEw ew) { var request = new RestRequest("earthwatchers/loginwithapi", Method.POST) { RequestFormat = DataFormat.Json }; request.JsonSerializer = new JsonSerializer(); request.AddBody(ew); client.ExecuteAsync <Earthwatcher>(request, response => Deployment.Current.Dispatcher.BeginInvoke(() => ApiEwReceived( response.Data, null) )); }
public bool ValidateUser(string username, string password, int apiEwId = 0) { var isValid = false; ApiEw apiEw = null; EarthwatcherRepository earthwatcherRepo = new EarthwatcherRepository(connectionString); if (apiEwId != 0) { apiEw = earthwatcherRepo.GetApiEwById(apiEwId); } if (apiEw == null) { var credentials = CredentialsRepository.GetCredentials(connectionString, username); isValid = PasswordChecker.CheckPassword(password, credentials.Prefix, credentials.Hash); } else { //TODO: Validacion de AccessToken, por ahora si entro con una api lo manda derecho isValid = true; } return(isValid); }
public HttpResponseMessage <Earthwatcher> LoginWithApi(ApiEw ew, HttpRequestMessage <ApiEw> request) { var localization = new LocalizationService(); string locale = localization.GetLocale(); if (!string.IsNullOrEmpty(ew.UserId)) { ApiEw apiEw = earthwatcherRepository.GetApiEw(ew.Api, ew.UserId); if (apiEw == null) //Si no existe en la tabla ApiEwLogin lo inserta y ademas Crea el EARTHWATCHER { //INSERTA EL ApiEw en la tabla ApiEwLogin ApiEw newApiEw = earthwatcherRepository.CreateApiEwLogin(ew); if (ew.Api == "Facebook") { Earthwatcher ewIdemFbMail = earthwatcherRepository.GetEarthwatcher(ew.Mail, false); if (ewIdemFbMail != null) //Si en FB tiene el mismo mail que en guardianes lo relaciona { //Relaciona al ApiEw de facebook con el Earthwatcher del mismo mail earthwatcherRepository.LinkApiAndEarthwatcher(newApiEw.Id, ewIdemFbMail.Id); //Le pasa el UserId y AccessToken para conectarse ewIdemFbMail.UserId = ew.UserId; ewIdemFbMail.AccessToken = ew.AccessToken; //Devuelve el Ew que YA EXISTE relacionado con ese mail de FB return(new HttpResponseMessage <Earthwatcher>(ewIdemFbMail) { StatusCode = HttpStatusCode.OK }); } else { //INSERTA EL EARTHWATCHER var earthwatcher = new Earthwatcher(); if (!string.IsNullOrEmpty(ew.Mail)) { earthwatcher.Name = ew.Mail; //Ingreso el mail valido de ese Ew } else { earthwatcher.Name = ew.NickName + ew.UserId.ToString(); //Ingreso un customMail para ese EW } earthwatcher.Password = ew.NickName + earthwatcher.NickName + ew.UserId.ToString(); //Pass = Doble nombre mas userId earthwatcher.NickName = ew.NickName; earthwatcher.Language = (locale != null) ? locale.Substring(0, 5) : "en-CA"; earthwatcher.Country = (locale != null) ? locale.Substring(3, 2) : "es-AR"; earthwatcher.PlayingRegion = (locale != null) ? Convert.ToInt32(locale.Substring(6, 1)) : 1; earthwatcher.PlayingCountry = (regionRepository.GetById(earthwatcher.PlayingRegion)).CountryCode; earthwatcher.Guid = Guid.NewGuid(); Earthwatcher newEarthwatcher = earthwatcherRepository.CreateEarthwatcher(earthwatcher); //Relaciona al ApiEw con el Earthwatcher earthwatcherRepository.LinkApiAndEarthwatcher(newApiEw.Id, newEarthwatcher.Id); //ASIGNO UNA LAND AL NUEVO EW var newLand = earthwatcherRepository.AssignLandToEarthwatcher(earthwatcher.Id, string.Empty); Land newLandObj = null; Console.WriteLine("Me paso la new land " + newLand.Id + " " + newLand.LandId); if (newLand == null) //Si la region esta completa le asigno la land del tutor { newLandObj = landRepository.GetTutorLand(earthwatcher.PlayingRegion); } if (newLandObj == null) //Si no esta completa la region { newLandObj = landRepository.GetLandByGeoHexKey(newLand.GeohexKey); } earthwatcher.Lands = new List <Land>(); earthwatcher.Lands.Add(newLandObj); //Comunico a los usuarios conectados si es que la nueva land es de un usuario existente NotificateUsers(newLand, earthwatcher.Id); //Le pasa el D:\Dev\Greenpeace\Guardianes\Earthwatchers.UI\Requests\OpengeocoderRequests.csUserId y AccessToken para conectarse newEarthwatcher.UserId = ew.UserId; newEarthwatcher.AccessToken = ew.AccessToken; //Devuelve el ew NUEVO relacionado con esa nueva cuenta de FB return(new HttpResponseMessage <Earthwatcher>(newEarthwatcher) { StatusCode = HttpStatusCode.OK }); } } if (ew.Api != "Facebook") { //INSERTA EL EARTHWATCHER var earthwatcher = new Earthwatcher(); earthwatcher.Name = ew.NickName + ew.UserId.ToString(); earthwatcher.Password = ew.NickName + earthwatcher.NickName + ew.UserId.ToString(); //Pass = Doble nombre mas userId earthwatcher.NickName = ew.NickName; earthwatcher.Language = (locale != null) ? locale.Substring(0, 5) : "en-CA"; earthwatcher.Country = (locale != null) ? locale.Substring(3, 2) : "es-AR"; earthwatcher.PlayingRegion = (locale != null) ? Convert.ToInt32(locale.Substring(6, 1)) : 1; earthwatcher.PlayingCountry = (regionRepository.GetById(earthwatcher.PlayingRegion)).CountryCode; earthwatcher.Guid = Guid.NewGuid(); Earthwatcher newEarthwatcher = earthwatcherRepository.CreateEarthwatcher(earthwatcher); //Relaciona al ApiEw con el Earthwatcher earthwatcherRepository.LinkApiAndEarthwatcher(newApiEw.Id, newEarthwatcher.Id); var newLand = earthwatcherRepository.AssignLandToEarthwatcher(earthwatcher.Id, string.Empty); Land newLandObj = null; Console.WriteLine("Me paso la new land " + newLand.Id + " " + newLand.LandId); if (newLand == null) //Si la region esta completa le asigno la land del tutor { newLandObj = landRepository.GetTutorLand(earthwatcher.PlayingRegion); } if (newLandObj == null) //Si no esta completa la region { newLandObj = landRepository.GetLandByGeoHexKey(newLand.GeohexKey); } earthwatcher.Lands = new List <Land>(); earthwatcher.Lands.Add(newLandObj); //Comunico a los usuarios conectados si es que la nueva land es de un usuario existente NotificateUsers(newLand, earthwatcher.Id); //Le pasa el UserId y AccessToken para conectarse newEarthwatcher.UserId = ew.UserId; newEarthwatcher.AccessToken = ew.AccessToken; return(new HttpResponseMessage <Earthwatcher>(newEarthwatcher) { StatusCode = HttpStatusCode.OK }); } } else { //Si ya existe en mi tabla ApiLogin Le updateo el accessToken if (ew.AccessToken != apiEw.AccessToken) { earthwatcherRepository.UpdateAccessToken(apiEw.Id, ew.AccessToken); } //Lo busco por el Id del EW relacionado Earthwatcher earthwatcher = earthwatcherRepository.GetEarthwatcher(apiEw.EarthwatcherId); //Le Agrega el UserId al Earthwatcher y lo devuelve earthwatcher.UserId = apiEw.UserId; earthwatcher.AccessToken = ew.AccessToken; return(new HttpResponseMessage <Earthwatcher>(earthwatcher) { StatusCode = HttpStatusCode.OK }); } } return(new HttpResponseMessage <Earthwatcher>(null) { StatusCode = HttpStatusCode.BadRequest }); }