mirror of
https://github.com/simple-login/app.git
synced 2024-11-18 22:53:27 +08:00
c18d9f5280
register page redirect user to dashboard if they are logged in enable csrf for login page Set models more strict bootstrap developer page add helper method to ModelMixin, remove CRUDMixin display list of clients on developer index, add copy client-secret to clipboard using clipboardjs add toastr and use jquery non slim display a toast when user copies the client-secret create new client, generate client-id using unidecode client detail page: can edit client add delete client implement /oauth/authorize and /oauth/allow-deny implement /oauth/token add /oauth/user_info endpoint handle scopes: wip take into account scope: display scope, return user data according to scope create virtual-domain, gen email, client_user model WIP create authorize_nonlogin_user page user can choose to generate a new email no need to interfere with root logger log for before and after request if user has already allowed a client: generate a auth-code and redirect user to client get_user_info takes into account gen email display list of clients that have user has authorised use yk-client domain instead of localhost as cookie depends on the domain name use wtforms instead of flask_wtf Dockerfile delete virtual domain EMAIL_DOMAIN can come from env var bind to host 0.0.0.0 fix signup error: use session as default csrf_context rename yourkey to simplelogin add python-dotenv, ipython, sqlalchemy_utils create DB_URI, FLASK_SECRET. Load config from CONFIG file if exist add shortcuts to logging create shell add psycopg2 do not add local data in Dockerfile add drop_db into shell add shell.prepare_db() fix prepare_db setup sentry copy assets from tabler/dist add icon downloaded from https://commons.wikimedia.org/wiki/File:Simpleicons_Interface_key-tool-1.svg integrate tabler - login and register page add favicon template: default, header. Use gravatar for user avatar url use default template for dashboard, developer page use another icon add clipboard and notie prettify dashboard add notie css add fake gen email and client-user prettify list client page, use notie for toast add email, name scope to new client display client scope in client list prettify new-client, client-detail add sentry-sdk and blinker add arrow, add dt jinja filter, prettify logout, dashboard comment "last used" in dashboard for now prettify date display add copy email to clipboard to dashboard use "users" as table name for User as "user" is reserved key in postgres call prepare_db() when creating new db error page 400, 401, 403, 404 prettify authorize_login_user create already_authorize.html for user who has already authorized a client user can generate new email display all other generated emails add ENV variable, only reset DB when ENV=local fix: not return other users gen emails display nb users for each client refactor shell: remove prepare_db() add sendgrid add /favicon.ico route add new config: URL, SUPPORT_EMAIL, SENDGRID_API_KEY user needs to activate their account before login create copy button on dashboard client can have multiple redirect uris, in client detail can add/remove redirect-uri, use redirect_uri passed in /authorize refactor: move get_user_info into ClientUser model dashboard: display all apps, all generated emails add "id" into user_info add trigger email button invalidate the session at each new version by changing the secret centralize Client creation into Client.create_new user can enable/disable email forwarding setup auto dismiss alert: just add .alert-auto-dismiss move name down in register form add shell.add_real_data move blueprint template to its own package prettify authorize page for non-authenticated user update readme, return error if not redirect_uri add flask-wtf, use psycopg2-binary use flask-wtf FlaskForm instead of Form rename email -> email_utils add AWS_REGION, BUCKET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY to config add s3 module add File model, add Client.icon_id handle client icon update can create client with icon display client icon in client list page add Client.home_url take into account Client.home_url add boto3 register: ask name first only show "trigger test email" if email forwarding is enabled display gen email in alphabetical order, client in client.name alphabetical order better error page the modal does not get close when user clicks outside of modal add Client.published column discover page that displays all published Client add missing bootstrap.bundle.min.js.map developer can publish/unpublish their app in discover use notie for display flash message create hotmail account fix missing jquery add footer, add global jinja2 variable strengthen model: use nullable=False whenever possible, rename client_id to oauth_client_id, client_secret to oauth_client_secret add flask-migrate init migrate 1st migrate version fix rename client_id -> oauth_client_id prettify UI use flask_migrate.upgrade() instead of db.create_all() make sure requirejs.config is called for all page enable sentry for js, use uppercase for global jinja2 variables add flask-admin add User.is_admin column setup flask admin, only accessible to admin user fix migration: add server_default replace session[redirect_after_login] by "next" request args add pyproject.toml: ignore migrations/ in black add register waiting_activation_email page better email wording add pytest add get_host_name_and_scheme and tests example fail test fix test fix client-id display add flask-cors /user_info supports cors, add /me as /user_info synonym return client in /me support implicit flow no need to use with "app.app_context()" add watchtower to requirement add param ENABLE_CLOUDWATCH, CLOUDWATCH_LOG_GROUP, CLOUDWATCH_LOG_STREAM add cloudwatch logger if cloudwatch is enabled add 500 error page add help text for list of used client display list of app/website that an email has been used click on client name brings to client detail page create style.css to add additional style, append its url with the current sha1 to avoid cache POC on how to send email using postfix add sqlalchemy-utils use arrow instead of datetime add new params STRIPE_API, STRIPE_YEARLY_SKU, STRIPE_MONTHLY_PLAN show full error in local add plan, plan_expiration to User, need to create enum directly in migration script, cf https://github.com/sqlalchemy/alembic/issues/67 reformat all html files: use space instead of tab new user will have trial plan for 15 days add new param MAX_NB_EMAIL_FREE_PLAN only user with enough quota can create new email if user cannot create new gen email, pick randomly one from existing gen emails. Use flush instead of commit rename STRIPE_YEARLY_SKU -> STRIPE_YEARLY_PLAN open client page in discover in a new tab add stripe not logging /static call: disable flask logging, replace by after_request add param STRIPE_SECRET_KEY add 3 columns stripe_customer_id, stripe_card_token, stripe_subscription_id user can upgrade their pricing add setting page as coming-soon add GenEmail, ClientUser to admin ignore /admin/static logging add more fake data add ondelete="cascade" whenever possible rename plan_expiration -> trial_expiration reset migration: delete old migrations, create new one rename test_send_email -> poc_send_email to avoid the file being called by pytest add new param LYRA_ANALYTICS_ID, add lyra analytics add how to create new migration into readme add drift to base.html notify admin when new user signs up or pays subscription log exception in case of 500 use sendgrid to notify admin add alias /userinfo to user_info endpoint add change_password to shell add info on how payment is handled invite user to retry if card not working remove drift and add "contact us" link move poc_send_email into poc/ support getting client-id, client-secret from form-data in addition to basic auth client-id, client-secret is passed in form-data by passport-oauth2 for ex add jwtRS256 private and public key add jwk-jws-jwt poc add new param OPENID_PRIVATE_KEY_PATH, OPENID_PRIVATE_KEY_PATH add scope, redirect_url to AuthorizationCode and OauthToken take into scope when creating oauth-token, authorization-code add jwcrypto add jose_utils: make_id_token and verify_id_token add &scope to redirect uri add "email_verified": True into user_info fix user not activated add /oauth2 as alias for /oauth handle case where scope and state are empty remove threaded=False Use Email Alias as wording remove help text user can re-send activation email add "expired" into ActivationCode Handle the case activation code is expired reformat: use form.validate_on_submit instead of request.method == post && form.validate use error text instead of flash() display client oauth-id and oauth-secret on client detail page not display oauth-secret on client listing fix expiration check improve page title, footer add /jwks and /.well-known/openid-configuration init properly tests, fix blueprint conflict bug in flask-admin create oauth_models module rename Scope -> ScopeE to distinguish with Scope DB model set app.url_map.strict_slashes = False use ScopeE instead of SCOPE_NAME, ... support access_token passed as args in /userinfo merge /allow-deny into /authorize improve wording take into account the case response_type=code and openid is in scope take into account response_type=id_token, id_token token, id_token code make sure to use in-memory db in test fix scope can be null allow cross_origin for /.well-known/openid-configuration and /jwks fix footer link center authorize form rename trial_expiration to plan_expiration move stripe init to create_app() use real email to be able to receive email notification add user.profile_picture_id column use user profile picture and fallback to gravatar use nguyenkims+local@gm to distinguish with staging handle plan cancel, reactivation, user profile update fix can_create_new_email create cron.py that set plan to free when expired add crontab.yml add yacron use notify_admin instead of LOG.error add ResetPasswordCode model user can change password in setting increase display time for notie add forgot_password page If login error: redirect to this page upon success login. hide discover tab add column user.is_developer only show developer menu to developer comment out the publish button set local user to developer make sure only developer can access /developer blueprint User is invited to upgrade if they are in free plan or their trial ends soon not sending email when in local mode create Partner model create become partner page use normal error handling on local fix migration add "import sqlalchemy_utils" into migration template small refactoring on setting page handle promo code. TODO: add migration file add migration for user.promo_codes move email alias on top of apps in dashboard add introjs move encode_url to utils create GenEmail.create_new_gen_email create a first alias mail to show user how to use when they login show intro when user visits the website the first time fix register
1 line
No EOL
8.2 KiB
XML
Executable file
1 line
No EOL
8.2 KiB
XML
Executable file
<svg width="100" height="60" viewBox="0 0 100 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><title>Bitpay-dark</title><desc>Created with Sketch.</desc><g id="Dark-Payment-badges" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" transform="translate(-450.000000, -489.000000)"><g id="Bitpay-dark" transform="translate(450.000000, 489.000000)"><rect id="Rectangle" fill="#18347B" x="0" y="0" width="100" height="60" rx="4"/><path d="M77.9655726,24.8298507 L75.0611082,24.8298507 L73.3716517,32.0095522 L73.3746069,32.0095522 L73.1424802,32.9971642 C72.9803905,33.0431343 72.8190396,33.0844776 72.6588707,33.1168657 C72.3581847,33.1776119 72.0474512,33.2080597 71.7266702,33.2080597 C71.3522533,33.2080597 71.0582164,33.1541791 70.8445594,33.0459701 C70.6306069,32.9380597 70.4803377,32.7862687 70.3934565,32.5902985 C70.3064274,32.3947761 70.2731821,32.1619403 70.293277,31.8916418 C70.313372,31.621791 70.3634617,31.3316418 70.4436939,31.0208955 L71.325657,27.2947761 L71.9070818,24.8241791 L71.9072296,24.8234328 L68.9399683,24.8234328 L67.5968549,30.5552239 C67.4365383,31.2437313 67.3428602,31.8986567 67.3162639,32.5195522 C67.2892243,33.140597 67.3829024,33.6908955 67.5968549,34.1698507 C67.8105119,34.6492537 68.1713351,35.0274627 68.6794723,35.3040299 C69.1871662,35.5804478 69.9023113,35.7191045 70.8244644,35.7191045 C71.4660264,35.7191045 72.0205594,35.6650746 72.4885066,35.5570149 C72.5074195,35.5526866 72.5255937,35.5480597 72.5440633,35.5434328 L72.5427335,35.548806 C72.4127071,36.1401493 72.1494037,36.6197015 71.7268179,36.9940299 C71.3037889,37.3686567 70.6761161,37.5559701 69.8437995,37.5559701 C69.4884433,37.5559701 69.1655937,37.5346269 68.8730343,37.4937313 L68.3013615,39.9232836 C68.6880422,39.9738806 69.116686,40 69.5901003,40 C70.4745752,40 71.2488232,39.8979104 71.9122533,39.6943284 C72.5756834,39.490597 73.1445488,39.1819403 73.6194406,38.7679104 C74.0941847,38.3540299 74.4909129,37.8347761 74.8097731,37.2110448 C75.1283377,36.5867164 75.3852876,35.8479104 75.5804749,34.9935821 L77.5902691,26.4591045 C77.5877573,26.4579104 77.5853931,26.4570149 77.583029,26.4559701 L77.9655726,24.8298507" id="Fill-1" fill="#FFFFFE"/><path d="M63.7191135,27.2970149 C62.3647704,27.2970149 62.1061953,27.2970149 61.551219,27.5877612 C61.1572982,27.7940299 60.8311979,28.1041791 60.5448443,28.4659701 C60.2581953,28.8279104 60.0336042,29.2455224 59.8709235,29.7191045 C59.7077995,30.1929851 59.626533,30.6862687 59.626533,31.199403 C59.626533,31.8308955 59.7307018,32.331194 59.9393351,32.699403 C60.1473773,33.0679104 60.5318417,33.2519403 61.0919894,33.2519403 C61.3914934,33.2519403 61.6617414,33.1928358 61.9028813,33.0743284 C62.1437256,32.9559701 62.4011187,32.7585075 62.6746174,32.4822388 C62.7006227,32.1535821 62.743029,31.808209 62.8016887,31.4461194 C62.8602005,31.0844776 62.9345224,30.7491045 62.9998311,30.4461194 L63.7191135,27.2970149 M65.7813615,30.9625373 C65.5987335,31.7126866 65.546723,32.4658209 65.6248865,33.2223881 C65.7031979,33.9792537 65.9896992,35.1386567 66.2691082,35.7191045 L63.4583219,35.7191045 C63.114934,35.1323881 63.1304485,34.8574627 63.0654354,34.6729851 C62.7006227,34.9758209 62.2968021,35.2256716 61.8541214,35.4229851 C61.4111451,35.6202985 60.9161583,35.7191045 60.3690132,35.7191045 C59.7176992,35.7191045 59.1608021,35.6037313 58.6986174,35.3737313 C58.2359894,35.1435821 57.8583219,34.8343284 57.5653193,34.4461194 C57.2721689,34.058209 57.060285,33.6041791 56.9304063,33.0843284 C56.7999367,32.5646269 56.7349235,32.0086567 56.7349235,31.4165672 C56.7349235,30.5086567 56.8942058,29.6534328 57.213657,28.8508955 C57.5326649,28.0483582 57.9756412,27.3476119 58.5422902,26.748806 C59.1087916,26.1501493 60.476285,24.83 62.7202744,24.83 C63.6900053,24.83 64.993372,24.8298507 67.2264274,24.8298507 L65.7813615,30.9625373" id="Fill-2" fill="#FFFFFE"/><path d="M48.7869129,33.2147761 C49.0098786,33.2679104 49.2851504,33.2943284 49.6131715,33.2943284 C50.1245594,33.2943284 50.589847,33.1983582 51.0097731,33.0062687 C51.4292559,32.8143284 51.7866807,32.5461194 52.081752,32.2014925 C52.3768232,31.8571642 52.6059947,31.4434328 52.770153,30.9597015 C52.9338681,30.4762687 53.0160211,29.9432836 53.0160211,29.3602985 C53.0160211,28.7908955 52.891314,28.3071642 52.642343,27.9098507 C52.3930765,27.5123881 51.9561583,27.301194 51.3398628,27.2986567 C50.9090026,27.2970149 50.1934142,27.2970149 50.1934142,27.2970149 L48.7869129,33.2147761 L48.7869129,33.2147761 Z M55.9271346,29.1416418 C55.9271346,30.108806 55.7697731,30.9929851 55.4550501,31.7941791 C55.1404749,32.5958209 54.7042955,33.2879104 54.1471029,33.8704478 C53.589467,34.4535821 52.9207177,34.9071642 52.1407071,35.2316418 C51.3604011,35.5559701 50.5112401,35.7183582 49.593372,35.7183582 C49.1474406,35.7183582 48.7015092,35.6786567 48.2558734,35.5991045 L47.3706596,39.1953731 L44.4595462,39.1953731 L47.8387546,24.8301493 C48.330343,24.8298507 50.9310185,24.8301493 51.7178259,24.8301493 C52.4520317,24.8301493 53.084876,24.9428358 53.6159156,25.1679104 C54.1471029,25.3932836 54.5828391,25.701194 54.9240106,26.091791 C55.2647388,26.4826866 55.5171082,26.9397015 55.6812665,27.4626866 C55.8449815,27.9862687 55.9271346,28.5456716 55.9271346,29.1416418 L55.9271346,29.1416418 Z" id="Fill-3" fill="#FFFFFE"/><path d="M42.6730132,33.2101493 C42.2987441,33.2101493 42.0045594,33.1564179 41.7910501,33.048209 C41.5769499,32.9402985 41.4266807,32.7883582 41.3399472,32.5925373 C41.2527704,32.3970149 41.2196728,32.1640299 41.2396201,31.8938806 C41.259715,31.6240299 41.3098047,31.3338806 41.3900369,31.0231343 L42.2721478,27.2970149 L45.5799894,27.2970149 L46.1813615,24.8264179 L42.8534248,24.8264179 L43.6152612,21.6874627 L40.5079261,22.1735821 L38.5431979,30.5573134 C38.3828813,31.2458209 38.2892032,31.9008955 38.2626069,32.5216418 C38.2355673,33.1428358 38.3292454,33.6929851 38.5431979,34.1720896 C38.7568549,34.6514925 39.1176781,35.0295522 39.6258153,35.3061194 C40.1335092,35.5826866 40.8486544,35.721194 41.7709551,35.721194 C42.4123694,35.721194 42.9669024,35.6671642 43.4348496,35.5592537 C43.4831662,35.5480597 43.5566016,35.5301493 43.6041794,35.5185075 L44.2090976,32.9625373 C44.0059314,33.0325373 43.8018786,33.079403 43.6052137,33.1191045 C43.3045277,33.1798507 42.9937942,33.2101493 42.6730132,33.2101493" id="Fill-4" fill="#FFFFFE"/><polyline id="Fill-5" fill="#FFFFFE" points="35.2646121 24.8235821 32.7004327 35.721194 35.6050449 35.721194 38.1692243 24.8235821 35.2646121 24.8235821"/><polyline id="Fill-6" fill="#FFFFFE" points="38.470058 23.5635821 38.9155462 21.670597 36.010934 21.670597 35.5654459 23.5635821 38.470058 23.5635821"/><path d="M26.2839261,33.2886567 C26.7402005,33.2886567 27.1706174,33.1768657 27.5748813,32.9528358 C27.9789974,32.7289552 28.3281478,32.4291045 28.6215937,32.0537313 C28.9148918,31.678209 29.1462797,31.2534328 29.315905,30.7792537 C29.4852348,30.3050746 29.5701953,29.8110448 29.5701953,29.2971642 C29.5701953,28.6649254 29.4657309,28.1708955 29.2572454,27.8153731 C29.0484644,27.4595522 28.6147968,27.2970149 28.0543536,27.2970149 C27.8715778,27.2970149 27.6825963,27.3147761 27.3891504,27.380597 C27.0957045,27.4467164 26.8425963,27.5834328 26.6079578,27.7940299 L25.3325172,33.2143284 C25.7097414,33.2810448 25.8403588,33.2886567 25.9318206,33.2886567 L26.2839261,33.2886567 L26.2839261,33.2886567 Z M28.8268285,24.8316418 C29.452876,24.8316418 29.9938153,24.9437313 30.450533,25.1676119 C30.9068074,25.3916418 31.2849182,25.6944776 31.5850132,26.0764179 C31.8848127,26.4586567 32.1064485,26.9062687 32.2500686,27.4201493 C32.3933931,27.9338806 32.4653509,28.4871642 32.4653509,29.0798507 C32.4653509,29.988806 32.299124,30.8483582 31.9665224,31.6585075 C31.6339208,32.4686567 31.1807493,33.1734328 30.6070079,33.7728358 C30.032971,34.3723881 29.3550607,34.8465672 28.5725383,35.1953731 C27.7901636,35.5443284 26.9423325,35.7191045 26.0296359,35.7191045 C25.9123166,35.7191045 25.706934,35.7156716 25.4134881,35.7092537 C25.1200422,35.7023881 24.7840422,35.6728358 24.4059314,35.6202985 C24.0276728,35.5674627 23.6266596,35.4885075 23.2030396,35.3831343 C22.7789763,35.2779104 22.3781108,35.1331343 22,34.9485075 L25.3840844,20.5832836 L28.4162111,20.1091045 L27.2181953,25.2002985 C27.4788391,25.081791 27.7247071,24.9965672 27.9857942,24.9304478 C28.246438,24.8646269 28.5267335,24.8316418 28.8268285,24.8316418 L28.8268285,24.8316418 Z" id="Fill-7" fill="#FFFFFE"/></g></g></svg> |