Ejemplo n.º 1
0
        public async Task <ResponseModelBase <bool> > ValidateSessionKey([FromBody] AuthenticatedRequestModel model)
        {
            if (!ModelState.IsValid)
            {
                return(ErrorModel.Of(false, "invalid_request"));
            }

            var session = await ldb.FindBySessionKey(model.SessionKey);

            if (session == null)
            {
                return(OkModel.Of(false));
            }
            //and tell the client that the session key is true
            return(OkModel.Of(true));
        }
Ejemplo n.º 2
0
        public async Task <ResponseModelBase> DoLogout([FromBody] AuthenticatedRequestModel model)
        {
            if (!ModelState.IsValid)
            {
                return(ErrorModel.Of("invalid_request"));
            }

            var session = await ldb.GetSessionFromKey(model.SessionKey);

            if (session == null)
            {
                return(ErrorModel.Of("not_logged_in"));
            }
            await ldb.RemoveSession(session, session.Owner);

            return(Models.OkModel.Of("logged_out"));
        }
Ejemplo n.º 3
0
        public async Task <ResponseModelBase> RequestDeleteAccount([FromBody] AuthenticatedRequestModel model)
        {
            try
            {
                if (!await ldb.Validate(model))
                {
                    return(ErrorModel.Of("not_logged_in"));
                }

                await EmailSender.SendEmail(await ldb.FindBySessionKey(model.SessionKey), EmailSender.DeletionTemplate);

                return(Models.OkModel.Of("delete_confirmation_email_sent"));
            }
            catch (Exception e)
            {
                return(ErrorModel.Of(e.Message));
            }
        }
Ejemplo n.º 4
0
        public async Task <ResponseModelBase <bool> > RefreshSessionKey([FromBody] AuthenticatedRequestModel model)
        {
            if (!ModelState.IsValid)
            {
                return(ErrorModel.Of(false, "invalid_request"));
            }

            var session = await ldb.GetSessionFromKey(model.SessionKey);

            if (session == null)
            {
                return(ErrorModel.Of(false, "not_logged_in")); //Auth failed
            }
            session.ExpiryDate = DateTime.UtcNow + ldb.LoginLength;
            await Task.Run(() => ldb.DBContext.Sessions.Update(session));

            await ldb.Save();

            return(Models.OkModel.Of(true));
        }
Ejemplo n.º 5
0
        public async Task <ResponseModelBase <UserInfoResponseModel> > ValidateSessionKeyWithInfo([FromBody] AuthenticatedRequestModel model)
        {
            if (!ModelState.IsValid)
            {
                return(ErrorModel.Of <UserInfoResponseModel>(null, "invalid_request"));
            }

            var session = await ldb.FindBySessionKey(model.SessionKey);

            if (session == null)
            {
                return(Models.OkModel.Of <UserInfoResponseModel>(null));
            }
            //and tell the client that the session key is true
            return(Models.OkModel.Of(new UserInfoResponseModel(session, true)));
        }
Ejemplo n.º 6
0
        public async Task <ResponseModelBase <UserServerTokenResponseModel> > CreateServerToken([FromBody] AuthenticatedRequestModel model)
        {
            if (!ModelState.IsValid)
            {
                return(ErrorModel.Of <UserServerTokenResponseModel>(null, "invalid_request"));
            }

            var session = await ldb.GetSessionFromKey(model.SessionKey);

            if (session == null)
            {
                return(ErrorModel.Of <UserServerTokenResponseModel>(null, "not_logged_in")); //Auth failed
            }
            var token = new UserServerTokenModel();

            token.ExpiryDate  = DateTime.UtcNow + TimeSpan.FromMinutes(2);
            token.ServerToken = Guid.NewGuid().ToString("N");
            session.Owner.AddToken(token);

            await ldb.UpdateUser(session.Owner);

            return(OkModel.Of(new UserServerTokenResponseModel(token)));
        }