예제 #1
0
        public async Task <ActionResult> Login(string leagueKey, string hashedPassword)
        {
            //get the league, if not exist return notfound
            var league = await LeagueRepository.GetAsync(leagueKey);

            if (league == null)
            {
                return(new BadRequestObjectResult("failed"));
            }

            //check hashed password matches if not return error
            if (league.HashPassword != hashedPassword)
            {
                return(new BadRequestObjectResult("failed"));
            }

            //generate login key, insert into db
            var token = Guid.NewGuid().ToString();

            var login = new Login();

            login.LeagueId       = league.LeagueId;
            login.LoginTimestamp = DateTime.Now;
            login.Expiry         = DateTime.Now.AddHours(1);
            login.LoginKey       = token;


            if (await LoginExistsForLeague(league.LeagueId))
            {
                try
                {
                    var oldLogin = await this.LoginRepository.GetAsync(league.LeagueId);

                    oldLogin.LoginTimestamp = DateTime.Now;
                    oldLogin.Expiry         = DateTime.Now.AddHours(1);
                    oldLogin.LoginKey       = token;

                    await this.LoginRepository.UpdateAsync(oldLogin);
                }
                catch (Exception ex)
                {
                    // handle somehow
                }
            }
            else
            {
                await this.LoginRepository.AddAsync(login);
            }
            // return login key
            LoginObject loginSuccess = new LoginObject(login);

            loginSuccess.LeagueId   = league.LeagueId;
            loginSuccess.LeagueName = league.LeagueName;
            loginSuccess.LeagueKey  = league.LeagueKey;
            loginSuccess.Logo       = league.Logo;
            return(new OkObjectResult(loginSuccess));
        }
예제 #2
0
        public async Task <string> GetLeagueId(string leagueKey)
        {
            var LeagueRepository = new LeagueRepository(this.ConnectionString);
            var league           = await LeagueRepository.GetAsync(leagueKey);

            if (league == null)
            {
                return(null);
            }
            return(league.LeagueId.ToString());
        }