Files
zitadel/internal/login/static/resources/themes/caos/gradientdeco-full.svg

51 lines
361 KiB
XML
Raw Normal View History

feat: Login, OP Support and Auth Queries (#177) * fix: change oidc config * fix: change oidc config secret * begin models * begin repo * fix: implement grpc app funcs * fix: add application requests * fix: converter * fix: converter * fix: converter and generate clientid * fix: tests * feat: project grant aggregate * feat: project grant * fix: project grant check if role existing * fix: project grant requests * fix: project grant fixes * fix: project grant member model * fix: project grant member aggregate * fix: project grant member eventstore * fix: project grant member requests * feat: user model * begin repo * repo models and more * feat: user command side * lots of functions * user command side * profile requests * commit before rebase on user * save * local config with gopass and more * begin new auth command (user centric) * Update internal/user/model/user.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/address.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/address.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/email.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/email.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/email.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/mfa.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/mfa.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/password.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/password.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/password.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/phone.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/phone.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/phone.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/user.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/user.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/model/user.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/usergrant/repository/eventsourcing/model/user_grant.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/usergrant/repository/eventsourcing/model/user_grant.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/usergrant/repository/eventsourcing/user_grant.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/user_test.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * Update internal/user/repository/eventsourcing/eventstore_mock_test.go Co-Authored-By: Livio Amstutz <livio.a@gmail.com> * changes from mr review * save files into basedir * changes from mr review * changes from mr review * move to auth request * Update internal/usergrant/repository/eventsourcing/cache.go Co-authored-by: Silvan <silvan.reusser@gmail.com> * Update internal/usergrant/repository/eventsourcing/cache.go Co-authored-by: Silvan <silvan.reusser@gmail.com> * changes requested on mr * fix generate codes * fix return if no events * password code * email verification step * more steps * lot of mfa * begin tests * more next steps * auth api * auth api (user) * auth api (user) * auth api (user) * differ requests * merge * tests * fix compilation error * mock for id generator * Update internal/user/repository/eventsourcing/model/password.go Co-authored-by: Silvan <silvan.reusser@gmail.com> * Update internal/user/repository/eventsourcing/model/user.go Co-authored-by: Silvan <silvan.reusser@gmail.com> * requests of mr * check email * begin separation of command and query * otp * change packages * some cleanup and fixes * tests for auth request / next steps * add VerificationLifetimes to config and make it run * tests * fix code challenge validation * cleanup * fix merge * begin view * repackaging tests and configs * fix startup config for auth * add migration * add PromptSelectAccount * fix copy / paste * remove user_agent files * fixes * fix sequences in user_session * token commands * token queries and signout * fix * fix set password test * add token handler and table * handle session init * add session state * add user view test cases * change VerifyMyMfaOTP * some fixes * fix user repo in auth api * cleanup * add user session view test * fix merge * begin oidc * user agent and more * config * keys * key command and query * add login statics * key handler * start login * login handlers * lot of fixes * merge oidc * add missing exports * add missing exports * fix some bugs * authrequestid in htmls * getrequest * update auth request * fix userid check * add username to authrequest * fix user session and auth request handling * fix UserSessionsByAgentID * fix auth request tests * fix user session on UserPasswordChanged and MfaOtpRemoved * fix MfaTypesSetupPossible * handle mfa * fill username * auth request query checks new events * fix userSessionByIDs * fix tokens * fix userSessionByIDs test * add user selection * init code * user code creation date * add init user step * add verification failed types * add verification failures * verify init code * user init code handle * user init code handle * fix userSessionByIDs * update logging * user agent cookie * browserinfo from request * add DeleteAuthRequest * add static login files to binary * add login statik to build * move generate to separate file and remove statik.go files * remove static dirs from startup.yaml * generate into separate namespaces * merge master * auth request code * auth request type mapping * fix keys * improve tokens * improve register and basic styling * fix ailerons font * improve password reset * add audience to token * all oidc apps as audience * fix test nextStep * fix email texts * remove "not set" * lot of style changes * improve copy to clipboard * fix footer * add cookie handler * remove placeholders * fix compilation after merge * fix auth config * remove comments * typo * use new secrets store * change default pws to match default policy * fixes * add todo * enable login * fix db name * Auth queries (#179) * my usersession * org structure/ auth handlers * working user grant spooler * auth internal user grants * search my project orgs * remove permissions file * my zitadel permissions * my zitadel permissions * remove unused code * authz * app searches in view * token verification * fix user grant load * fix tests * fix tests * read configs * remove unused const * remove todos * env variables * app_name * working authz * search projects * global resourceowner * Update internal/api/auth/permissions.go Co-authored-by: Livio Amstutz <livio.a@gmail.com> * Update internal/api/auth/permissions.go Co-authored-by: Livio Amstutz <livio.a@gmail.com> * model2 rename * at least it works * check token expiry * search my user grants * remove token table from authz Co-authored-by: Livio Amstutz <livio.a@gmail.com> * fix test * fix ports and enable console Co-authored-by: Fabiennne <fabienne.gerschwiler@gmail.com> Co-authored-by: Fabi <38692350+fgerschwiler@users.noreply.github.com> Co-authored-by: Silvan <silvan.reusser@gmail.com>
2020-06-05 07:50:04 +02:00
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg width="100%" height="100%" viewBox="0 0 1920 834" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
<g transform="matrix(1,0,0,0.694168,0,-895.476)">
<clipPath id="_clip1">
<path d="M0,2490C0,2490 1651.96,2340.76 1920,1290L1920,2490L0,2490Z"/>
</clipPath>
<g clip-path="url(#_clip1)">
<g transform="matrix(1,-0,-0,1.44057,-0,1290)">
<use xlink:href="#_Image2" x="677" y="0" width="1243px" height="833.001px" transform="matrix(1,0,0,0.998803,0,0)"/>
</g>
</g>
</g>
<g transform="matrix(1,0,0,1,0,-1657)">
<clipPath id="_clip3">
<path d="M0,1790C0,1790 843.509,2492 1057,2490L0,2490L0,1790Z"/>
</clipPath>
<g clip-path="url(#_clip3)">
<g transform="matrix(1,-0,-0,1,-0,1657)">
<use xlink:href="#_Image4" x="0" y="133.189" width="1057px" height="700.004px" transform="matrix(1,0,0,0.99858,0,0)"/>
</g>
</g>
</g>
<g transform="matrix(1,0,0,1,0,-1657)">
<clipPath id="_clip5">
<path d="M0,1869C0,1869 805.272,2490 1339,2490L0,2490L0,1869Z"/>
</clipPath>
<g clip-path="url(#_clip5)">
<g transform="matrix(1,-0,-0,1,-0,1657)">
<use xlink:href="#_Image6" x="0" y="212" width="1339px" height="621px"/>
</g>
</g>
</g>
<g transform="matrix(1,0,0,0.694168,0,-895.476)">
<clipPath id="_clip7">
<path d="M603.5,2490C788.5,2442.99 1389.58,2730.25 1920,1430L1920,2490L603.5,2490Z"/>
</clipPath>
<g clip-path="url(#_clip7)">
<g transform="matrix(1,-0,-0,1.44057,-0,1290)">
<use xlink:href="#_Image8" x="603.729" y="97.207" width="1316.5px" height="735.821px" transform="matrix(0.99962,0,0,0.999756,0,0)"/>
</g>
</g>
</g>
<defs>
<image id="_Image2" width="1243px" height="834px" xlink:href="data:image/png;base64,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
<image id="_Image4" width="1057px" height="701px" xlink:href="data:image/png;base64,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
<image id="_Image6" width="1339px" height="621px" xlink:href="data:image/png;base64,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
<image id="_Image8" width="1317px" height="736px" xlink:href="data:image/png;base64,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
</defs>
</svg>