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)); }
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")); }
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)); } }
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)); }
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))); }
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))); }