Esempio n. 1
0
        public async Task <IHttpActionResult> PostLogIn([FromBody] AuthModelID authModelID)
        {
            User user = new User();

            try
            {
                user = await db.Users.FirstOrDefaultAsync(c => c.UserName == authModelID.Username);
            }
            catch
            {
                return(Unauthorized());
            }

            if (user == null)
            {
                return(Unauthorized());
            }

            if (user.UserPassword != HashPassword(authModelID.Password))
            {
                return(Unauthorized());
            }

            string source1 = DateTime.Now.ToString() + "|" + user.UserName + "|" + user.UserRole;
            string source2 = DateTime.Now.ToString() + "|" + user.UserName + "|" + user.UserRole;
            string source3 = DateTime.Now.ToString() + "|" + user.UserName + "|" + user.UserRole;

            string Codestr    = HashPassword(source1);
            string Tokenstr   = HashPassword(source2);
            string Refreshstr = HashPassword(source3);

            Code  TempCode  = new Code();
            Token TempToken = new Token();

            TempCode.AccessCode    = Codestr;
            TempCode.Timeofrelease = DateTime.Now.AddMinutes(10);
            TempCode.OwnerId       = authModelID.ClientId;

            db.Codes.Add(TempCode);
            await db.SaveChangesAsync();

            Code ttt = await db.Codes.FirstOrDefaultAsync(c => c.AccessCode == TempCode.AccessCode);

            TempToken.AccessToken               = Tokenstr;
            TempToken.RefreshToken              = Refreshstr;
            TempToken.TimeOfReleaseAccessToken  = DateTime.Now.AddMilliseconds(1);
            TempToken.TimeOfReleaseRefreshToken = DateTime.Now.AddMinutes(100);
            TempToken.UserId       = user.Id;
            TempToken.AccessCodeId = ttt.Id;
            db.Tokens.Add(TempToken);
            await db.SaveChangesAsync();

            return(Ok(ttt.AccessCode));
        }
        public async Task<ActionResult> Acept(AuthenticationModRedirect authModel)
        {
            AuthModelID modelID = new AuthModelID();

            modelID.Username = authModel.Username;
            modelID.Password = authModel.Password;
            modelID.ClientId = authModel.ClientId;

            string code = "";

            try
            {
                using (HttpClient test = new HttpClient())
                {
                    test.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
                    HttpResponseMessage res = await test.PostAsJsonAsync(new Uri("http://localhost:1524/oauth/login"), modelID);

                    if (res.IsSuccessStatusCode)
                    {
                        var EmpResponse = res.Content.ReadAsStringAsync().Result;
                        code = Newtonsoft.Json.JsonConvert.DeserializeObject<string>(EmpResponse);
                    }
                    else
                    {
                        return View("Error");
                    }
                }
            }
            catch
            {
                return View("Error");
            }

            if (authModel.Redirect != null)
            {
                return Redirect(String.Format(authModel.Redirect + "?code={0}&state=", HttpUtility.UrlEncode(code)));
            }
            return RedirectToAction("Index", "Home");
        }