From 29fb7feb8544ecf53881cb5abc49636b283980e4 Mon Sep 17 00:00:00 2001 From: Skylar Ittner Date: Mon, 11 Feb 2019 14:59:33 -0700 Subject: [PATCH] Add API key type column to `apikeys`, update database schema --- database.mwb | Bin 22789 -> 22851 bytes database.sql | 62 +++++++----------- database_upgrade/{2.1_3.0.sql => 2.1_2.2.sql} | 4 +- 3 files changed, 28 insertions(+), 38 deletions(-) rename database_upgrade/{2.1_3.0.sql => 2.1_2.2.sql} (91%) diff --git a/database.mwb b/database.mwb index 069775189fc43dfef35b9143411564b9cc2694bd..235a664ece2b274f164e3fc457d68d5f148f96b2 100644 GIT binary patch delta 21622 zcmZU)1xzMg&?St!ySux?;O_43?(Wby4DQY#gS)%C4luYgxHIUB^E2PS+1+H5C-ro0 zr@NC*^{G>*&JAw_9clyxl;yx7FhD>+U_kJ_ z-I*M`OqskL>@NfKyf%2#kNiI2>ZZkJ+!OpkP$&kfE2j@A1j_`{cq;TOl>~f(L9CmK zV&pRPUsjN5ez#s|W59@#iCpSd`O)6aQ^D9@TyOOEzCC~X=f?s{y_L^o`3j%62>C@; zpT{G8?>e`XLLJ%6%uQ?lgBgI2J4R+~uw1w?2kI^oXS4tb+>a z`|C;4gu8H}`b>okUt39Jqy5JX!n!-&V=Xtq3Q4jl0AT#_t|}DEfoS2(jgW@fZi=y2p~eK6~2 zd*zKwwe7AOiluz1S=*A9A0=B@m`E7u8!fB5ubtnx4MaejI%*9^Wdg^OXv1$r^A#$( zd=)hx46L{^+@HBPYxA!T%%9cd{txQvsw(bX1K`H`-X7ZEzsS!1XNd;u9I&2hetwgr zcc-t_CkaLonPH78;3y19lo~3}f*U1}ABkME%~B#}nDXDRlA2N#`Z2xbO@vf3L6bZl z9#Rg}G!wQHjuyRG{d8&1j7vCo(sHAOzhDUT;VbGA^8anbg^TUQCL~nabef>&TTk=3 z1XyGI9-tAtarfsVo!YzGE1OxcCf2%*c96%Bk)axo+Ren;;31-fg_T6G;Fkwa4by97 zMI@JnJyMD-j{o+zPK(%bXS@7#>Gp*hszF0su!mfG3FSwRa2N1q{EcHD;b$0+cDz>8 zjV)Ub;oJ*x40Tx{?wf{cj0UWEIT=>bC{UH`I*Ku1I_2D|NN>bwb*#p!Wk+&t>@uaj7!Ph|cUlP6kv%m_I zI(#tQe$~zG^~jDxi?!P5^PVXu5q{OeEPUj7z<21-+0nO2_itB`Im}F!Q?9A2SK(u6 zGK4xGhE94(8L!Kl!=kUKlLyCL1QInD#CH=j+5%MI=gjbAe=ou_73hY(Wt^I;1oSSA zs0mamw+~;Nj6bw%m4+UY=2G8ynEeI4eL}>Gj z2Xeo$7mM@=sR>F;s0dmFNa%a;0DiBwf6fdcPe^Gp6hvsOg|9pTC;}1`6eb{w>m5oo zXx!lZU1*!6-?+}$x%O!_j@z2fMw+D@MTHK+$ys{4z)(GC;E3g^EXK>q$>>MlbDtH^ z?f?2QvvykL<@CAO6Elthjg4AA4~M@LcD(=CZ%tt-T%K7RW~Bo0>rX)~9455-{Y`AD z)gm#-Fib6+A4Jf4y&-cdS2Zy8NMp@pC#;M!%A*2XN=}(oJ&G~uoH{Q}Hi>C!0;7C_ zjbWJ;X01Y8$TFpVfsO%&_IT3DlF!>tv&m>Kyh=?zZHh;5HK(>U2=fLB`oM53WWt- zCSni-91MxppvZ#t2f2jsq5wn$O^CaXbcT~ZBF(UCVPumoPdgMxI%jcICW1<^4i6b^ z^b~6eop~3%D=5O_6AcFv2vmSOM2a>T92nesf$@zLH;y%#jW7((cqUp_p-QH*CMn6- zE{tzn5NfzQtPtTq)GhEcq#u-Imo5L}1Qbq|Q*#}z1zJQ*UCCz z@>F{n{o{GZpMm3&4jcWWrGZ*#h4@F6{7ekqeB;|=c(j?~w|Kywd*Jaf+GPqw`;NCq z?`S`KVreiw!!ADW+>3g#xi9Qnqn%^M(Z2ulPedsOg|kSFhDYpcMZ?|~_m8VVQ1?8g zl9xdE^YhuZCMCV9<^7J#zZDVPYj2U9)^@N$)iTSSK4V>{tKuO8(+-YGQse4nnMmA+ zJ*++!Edm;n$uPio>z$3e8?fz!*P0S4fmPKie8!)r>Fa#3Q@#4Gq?T2ut}dsy&fB83 zRYM_TySju~3!_p;kzgy*v|$p%=TO!i3FwQQ?b-U;7ts1CIQ=cz@9izNpzWRDTJbO7 zwJyn&$+urmK<{tituQkFZ`YQjZHabxR?t%plS$+zsfThh+;vx1OOzY0TDuq#k|1*3 zQP8ee(%+vm=XmP;`;v+`Ya0S<${Vyf>d}bn`VH6nXCUG1a7My2P?h2WLk*a4|M0&F z{GsH{$7^tvq`9xHa0j%s7u9M?On6mkvSORoHk%b}1z0GI?=iT!CjM3ad@gGD%Q57{ z+YsC`c9?;?7QNa>YIdYbw{>-^m~R`w>UE2i=U851-H-Sw;v&AFY!Ubk4|amzonx}& z7m6~QGe<0K)&vx!EL5sJJtgq!@AA<$YgL1b>pJI5pON7p={7Z0|6ex)De7M~A@8h? z?W^EC%0f{(%RzR}bQk0`9nKZBRa}Bh+$Q!EM7Rrt)hy(T>L-Y|YEc%1w`t-)%gPQv zV{0nX{&zEL{V*c7X4_gZW9vvW>q~S5UQ6psv-{veLQXNhKJS1>sbc`*^0eT7N>voxBvI1PMzjkbXap(KSxbk|95knx5OKy7u{LDjm)rB1FQyYBsdm>^{1%ae2M?sE2gsM{~a+SNd3Zg&-v z`AiD&$2*L}bPj#`hZ?;nYB-nR_YR>(B66yqAbG}b1d%BT@S583`*KHv{M%Ka~YBovoWpDC(u+N|)iKXgRXkZj=k=7pYL`%)s5C1-RrXbqu3g zE}82y;)ghplp|2w35d|ZCSg$Km zzGBc0#CV&9Lq0qbp(fjI&AT?Za4lnkz1{hmQ;dDBpnoo?@OfY^T267-8Z!d2f8Kx3 zy0jBsr#o@voHs`67N*fVGH+z#$`hl}n=}UdUuYAIl@rFgo@??Z#~&%U0MY4Q!bv%% zIc1A!qjN;`=}!0Q?mC)vp<>pO1&Y*db&IKMWf;YY*?q_xU0fE9<+oEMWk+lly){S@ zD%yPHRe~T6SbZ|bFd%tusS{{L6UP?w`KjI;-k-~ZQ8paGp-zAk0z;8TmOrSF7x-w8 zE>Nq-l#e9`L93Ak(c$11dX?9C84a1g(rxF7USfw4VBS=-{*ci1E6sbP0ng^Cd%|&v zC>%$*(Bj1)fr7!rSf~TIK}K$WUl*M6ce97~|R?!6N#{zo^kJRnAke>@M{;~n~)fzJ%zrAZo!FG7Tb`C1bS5Tj*@G;2# zl7bOWYCfTQE1k~&H*Y&t4G7Tcf&O_!adbMK;Gvy_`tvA&)aEpHMzTpXcuD#%oG0XC zgl!;mZT^@;56Op~mSknw@oNuY6BYlt4qG}qgp^~sb?{<@V&{Zy*JpN10KFc`A>AIk z80CzKAUG$8@NS)j=~{{wo?QpmJbmU=ZxU8uk)AOSff|vn(<=e!-WOObFZs82y3Dgq zDJLFEWWa*+xObammhy{cdW8chPVLBV`*SQ)N^f$7CRpNl>t@C`^QdsyQD?+RqMLt+ z_K=3^wJsZrSZ)gqG<_O_RNO3=EH+K#1MD+2W;h-BS5UmH3B9acU6;?>#l9ffB@)F8 z#w9Xvm~eDpz73fAdI`|mO!Vpe=n!gsG`R5o|E}|ZNkyQ^Vx|1bKjDd>d@ zJRDgNa#$30p(q{jku74On72JESgeoRCY+}=(C4fHi!S6h2CzV=w`spXO@D|8O%ZJn zgchNWX@ z$>f45a>QhQg~Z{u5(Y}Z>()k~76S4K6$aQKI5c(-_obrt3-$MvKDD_92hbC{AhUV= z2a#AY6`DehLIE&l2w$@CWk9xcgq@Ap>1({LhJFcu^W(X?>>r=V-j}>?kVpby7bY3 zf38JBXbo~$)~lzCEv7&pdDoYp0;T#tz0&e4FVZV$D=aVn>L^%$Yjyyf@dkOlg$dBl zl~@>kAEdiV1hNrf?DuK{INLpjX;Nb1zCO(yV*LbbeWx#~bAX=LmN|Jk$%k>wU=N=nAZ zH#|CuZC*UsMFViz<fpX3g4l)v$?JIWrK7PtxnhY?bTm8-NQu8^gW!Ux?{uBDR*8k+^tIp=han=<*# z<$KHfbdHx-I)%~r>Mo&lj>;o7g3~G@nB3)ikKzJ0Bgo1lmyWTdXVuX;5w~AV^?)+f zt%>>AlJ|T3dFKR$jQOG9WZ{ZO4C=$rT0Im<5dw3&^=uJ?9FfJA?D#%>mN6VS-oODa~G4p|PUQW)DVLgvjWeWu_j{K4iFJHop&*j^82IS-+Hm4pL9JMKYFY$*8Gh8si^P=@CY&U zS-)wmN!{SSU-?UqSj9I3Q1W^~<@3mR!ibq>6`*Q9ceU_+92i}7x3+0JOn9%C;KJ=3 zS9pKq6%`&sohw3aZ4WQpew#jm>KceuMSCT4rO1<(|0c4$^Ur+Gxm zxVQ)hR68lpcr1UxA?+_-+S>Pdkuez;D*WaJQCmz8jW|N+Ia@oR#_^g7!KjLK2_3FN zgtTSI+BAT+qjYKN+{YTl( zY_5e1#y7q^&a?n@C}j$r6hL*okno7(nLv~A`Kmtz7FcHE44(Nq1mPHLF#*#I@t%pi z;|vkgd(=_NH_+HRBbKiA@bmb)pM~eP!({N}7zMR+$Y-_};O}e@C&!d87MsNPKS>Mn zCHw094ed7tNeVJ$4xzvmC?1d@3u{M-&TPYSFS}|-nP)~*d=f!4fIPbTqwdP7_Ff{}POFMWZGSSzMm6 zHvVe#>_C~?OGs?BJA}IYAvosK#i7POUQ7i@gv2CcunrCeA6?#t`6adCQ;`m43CC$c z-g>^~bfl`nX2}U!GL`VHCkt;g9b5{EgpW4SW7~8|nlfDX$j^Pw>2wvEBA9IAK8h?~ z3Dzr71_c4@HpQvG>-tJI8DP)kN0GPi{IA6%^0@BG_xj)MjD}jgE6D%PM@*h-) zAFclT^LIb8N9g|wtWENxv5vSe3!U0xK}qvb!er25P?JcZ5AdOGD^Qp|y2S-CAwNin zVL@MfAp)8XTe7i3Z4-jNL@nqr#M2Iq&o?4JgGaqQOVj#9AvFI1yB-=={>f1SV+%4f`*y;#n;~79C17|hCTBrqgKS??TTsiNUm1f=kSC_t)#bRhZTMspH1I|rVKWfvp47tk#!vrg> zj3vZdFuv24ZTZTog^;m+-7Qq99!SkWX<4?yV9c>*0^{UF<6-5|Ar4^~>z+unWzPES z&ADqx?Is>@;~L9+@cKs>ZQOI@dMLJ(5NrZ~9l3K>y`!PnCr~+ZgacPJ_$yX*AmPn& zVk|T>mD(h~Zk?NEf2CNojVPngF z1K3w@SWQa_ADj$I*;HgMP~p^D8xA%yL;qAHJoQ#!F>2cd?P%!=x+CNmVR1pqokEC1 z1CR>|m}%1#*aXgT&|_|cTd>1ko)BA*gZW9XRdy%_HxkA-wjdLnXEwGZ^ngu5rPe5= zUNUXM(Bw!qrh;1B#W!YEvD_nveFWFOLf>)(e*_O*5w9}UBECS2ehQxu!@Pr^ga2he zA?Dfq2%dl)oc)g31+yS_kBlG%k+*yB4H(#ZKxSCucSml%iSShTvA-QmWkC+Lz?TTA zb0TpqoD$|s^Ycgxms3)&^hgA^#S*%=cCwr`8_k-)WG`R%k3BNJR5K$%O9t3FPhrCW z!e1xhCu~)?r(^PuaCH$-huOb%)EeS3LKyj9?6jizqmX0~#luKU-S5_Phf^G|kzyk{ ztK}LeI_#7Ot61J6%ZIFr8hs(AzeKp z;)_E{#YD?PxzB~jvk2cz-w$q1#8RBwGxj0nmo1S!i7LWKOO0C4=0D-*$n8dnD9838 zWsUb?z;NoOi{CS49UkdSh_SFiaA^=69cd(7`c1+NaVz?RM3mcBa00M+byH#g)*37g z^#uH_P9#CBM^Mo^fz~1Q6Yirx0D1Qp@1sclC?GZuzo(@y7G`2inM8!jmc~Pa8x2#D zfGpTeR93bK3Nb7)PJc?lmq7u;xxhv^TChJF$K*&{6v7ER7#E@s^GELeN0|@qRdL#^#M{di_LFN;~?0pmM&%l_f9rbju%mTN6`S`M-7y zctC2TXcb=EIA2vxXl~8-tFx6jS7-3X>Vy*K_QsINz3%^S^=zMJu5_a*V7h$k|CP-k zzhpDVO-g-3;BJHxyQqD}(EbCojoL=>$H5tm2|UQuHW-Tu1!Wcqd5D=V5{r!Vu5q1} z_9H~l(f}wAIR;2Om@yd0CNapbs0(BeXf}0Jcop~!a1eX&{x;&r*j~#78;|&#unZ=F z@*s?f*w3Ni*T#Yoay!ZKTy z=9qs0-Z)1#NW){HI=kX!WmqJ-fsR@T>aY-5=b>7Nl`AYPx&aYNo^lB2wB0k2Fj30( zLamUYuLArtR5OG;Pa|YO`G=80T6b8oGo#!fXSU2(%O4cEWFARVjJ-?^^@{OTd~=6( zivH=Cb!Qw2iqs_AukX_Kz_>hVzgtofEeZp$J>Z~`na{xcCPN}to@BPyAsm;h5JJH* z>#9ONCLez&kq!Gn+$lPYM_#QkFj^^ei0POc=N z!vRN0Ig+_bqae;UX-$E82-m;@@pgy!nT+svR_$#=MXpinNlFx?p9s`AX`W?vW#IVI zr9Qa+V}LXj&dZ37AJ+NEpyKbDb`H1abx)mowm9f@r)tGS$)F%z8Wrk@az%4?z>?`> zLbIxko_VF3JW`r$LW%0BdFf?%Cxaq@p|3^Vf^ykRW`mYE9vWS2A+Hsioqy$(rAG99 zZYcNGw$^38BO=%JJl8cPbHwmCHOF3goHjDowS4PDYS241+Dr+@>xdtr$Nq*7zS{(qGCN|vBx9hJse?Bg#DblE2_pDpb3f77-RegMqy2%4FFWh0=TJ(Mr> zqk(<7k={}2qB{2+VRa33P3IhcqV_Aw2^d>R&HVCJ3%fa`XDIK~?#BgdJc8C~TGh4*VjviUdamtFU3%yFapwW8xhRdwpn2u07JVi`A4A?(Qes8t>5UmEWo zDp0eJs(>`-OPKJlXcD3Bp%%VG6Awh0{=E7x35vYcV)=)P2e-XuJ{ zw|wWCt8_~lM!Nna1a)`J1Cun#10y<3FGYu<5eQ|bQ{T0al_3(P3dbCRGL$KoOj&+Y zDGVbCh_PUVez+M%7?%&Hc#={8Q_^s&$K;O|A}7d?B2RztUhm60M|(7wHuir6CxZSl z9Ok$RSAl5frr1Ph{Wp@MX5A$U+tM4%Z;g8H=EB}V0Yij*K!zgS4MYb0PZe_e0k3ZJ z`KWpH)o`CcqWIi!pDL2}^@Ou_Md=Z;UkXIZJqK5zc2t+hEGwR(QOODB>H+j$Sf-f@tBzWFZaLLBzvj( z7YqGrE*pEj8W)KRlPq8jX~9*GplR9Fb!mtp4}a=sBqZy=9sZ0k5Ukv?!B0&Hxm8gX zgnQ9m4uy%hRT*L+4xfN&LJ#{9xhlzu<`ZJ##x#i zl4v)vKOx*1-x@Tq+z+@n`{QB&jWi5?Awn@NT4Ce&mpzG%n-U4*xK(~D|@>!Mtr(!nb6HQ-!dy0Y7O6Bhz=P^K)GS>R zM*gwmynhK&d$gMioU!)U@Os(h=YLcr{*}9D(rSbbCKDodmGP4l<#v9a=9m{!3Y-AZ zP1dqr{TZYyU0gqM%*8|BR1n8 zKkzT!Sx310BeFeXq~XgDfC{#IuC#{p-XQRV3xkXDgqlqf#sc;iAL*$Ch7u%@D8wk* zc~@zM!}-N`S+cEL%6az_7w*e1psH97J2;GNv7W$RrS4y84ZOz?MWpG=vZ?7OKuu9~uAab@#?MQ7YzhB)Xo<$JZJpXD1 zQTa(s8giRArrPV)qU`n_cRrbiIMR8$L`<%KSSR%^(H?6mi)jN2w&B@OU_hQbVKWhk zqFAhq+m#)#tqZg~Le`wX6l(k?60t+EU@)=$8Va8jw!A36wblMv(r@1AT#bf7J~P!~ zO1BQw-!TDAO`V$_1EV?ApBi;TgjBwOFK8ANWnr~=We75@7bygR!w?RJ8&q_KpSgpt zDWvCp)TREF8)>46!gVA2Dm4*8a`O+<^1gT`0i_)P94)ba{nCnk>D+thW>ZLKp+a@YqCV%E5%0pc{65Efcl9(dtC(n2FTkoRtJA=Ky4Kn{re zb0yZ!J>(JUe;$JhfCdH=c2kQ&+D86AgQVRI%Y7LEXj_+Q3yga#`$UKwN8R5ArsijH{fT<^z&eR5hwFO0OBNe41s%%S-p$7JfxVuVgl13Hx4DNv>-4nSy zL)qH#l=6(yWEc4?2_?j)u&HTw7u$3gOp+#OC$V2iL{3gor% z{^vUc@QmmCG1UO0M-T|N8b(FoIdSDrVHDfbi^6myG4GugcU=JepOQtrK4a!%HmpNM zA@blcMJXETupF-8=8^IWfjzU7@BQDR%u&ay zE#y~|IU2W)sD7y;L-YRZ`6%%P(8*1vYYiX4VOT<*nO${Oj&6RuqNR8vu>_EglVg;| zDVKD(z|?Vsp6xY7^_dRW4};TZdb|u5(&*e}NY7>Dnu-g}uv1vxetsGYEy}yUM_TI! z>5b@YcMVI9-&SnC*nE-EV~rEg~EuWR5OP}1D4j&%FcQH(KppO6%)0mhr&b1c2z&bHXuIAD>JwCT!rAwaDb21i0kPg^HKjaWzL z+X`+y8xIY;l?4<&hBj_}V{a4NJF2w~q#=ZL7IE{mvdw?}Q}U)MzGG7mqJ@#&)!BBi zDd-GjfLY(tG#jY;407eag5ZRGf9bl_7V`(<#S^j1NvjKm>tq8mpsV2DiON}$i2|n; zmRC;`)%)SWdmrP4HhRSc@cT=;G3mcs9%HA4E*WuF=3L==AN7~#)EMY?OcZKo z{ig2%T050(PnAM~CRGfT@YU(KRRI3}82}buKGm2#^Q3y9a9nQDGv8Eq=9p2jcUSvt zV>_u!SYaPytef5dZH`IS?<@o2d|oU*wsgvvtq?D+gUbN-8Mj;R?o>K^gZ8&H+q zH=p7wSAN~=-Q3d_AKH#H#=8bISXSd>c)o}K;R!=yq_^GDyP~cP5a@;Qr*rx|WfKoi z4cGlq`n;6#-kc+sEX%^3Jd6mRgs-x~9Y1<+k>1pSuL9|<*dV4e99KQUjoFnnj7>JX z6{Y*mZp7m&V3k~}!K<~iIj(yY14QwtdbXe$9bGL397--~$bwx+OVl072Dn(5v$$AT z)c$5hYI8fWMOTb=I2r#)LkdNgF%`-EBaZRyx7P!?2UqR)QtipC@@MvlupUb7f@nV26^}RRE7tLP6lx1JQJqPeBB~g( zkl3j5tF0fg*$81#LnujBR8mss<*Ky$J#Fp3#%_mR4guCc|0yn?k^Sx2ySis>gNj$b zgWH`LgE2!7_y*DkM+vZzY@kk>j6$l=f4Tm?a=V?@sQebCVpII{6@iJDYB~F8Lt#advTbH27Gw@0uFQMR6 zL+5<1=RNPO78?U8K;i3`;CmUAAnE_v9|?Jd_Ef)11ZouZWE^x2EKC{gtG->6(h4d2Uc$CjYs&SE==oyLUovkIZGeWb}`yn8Zw*Uwf{AXz3u(SSy{Rk{9 zBqGN+?T22+*u=Af+HY42k#{?Q(CaSt$yGg)7^Fe+_&~5@uOcPb_$86+&&&&A*HDT} zG*@s%fsjp{hM$q(`q67Cb<6|+F@?D^N*&}OuJ@8a&{JmNyBNQMat4Z0$}oA9RTKi$ zo>2Ge+v(dN)PWeqe~7nMKyJ^=1wPExYMmIQ$mAYq@UDNW?va{DWiNe$E?vJ!2G1%@ zR_RunnL^~*2JEM`|*Ix6>Vbym&pDT)z=QKXRWX*fjU?RCG z?Wn&tj5g^U(}SWWYQUZ1j6R<)^@yy~%gtKxaEUX!4fR-2y@QVsj$pP_i^)i1R-gAr zNp16RUb*WL0UU$nufq1Cu`9NGnz215_DHZi+KJ&38mqb|v2W~7Bkfpnf*mf5vujg^ z6>H**d0EprS$y`(hT-(UTMlnnb%h?p+p#H^hedSrwTi2~Rn@l-mqUB+wn{3?{f3Wg zH>(ipsv9=13Lm@RUsg?crBk#DZd!HKrB&bQmBbnKN}i>E*X}*!jPhKU@NDPJz8o3!l;3^DZwZU4rU%ezgXn>NZX4k+K36zq#_J4D7KAb)64` ziH{2PnVT_C^|Obys=GGkoj0Y}5AMdL%AH@IJbnSiycz_R^B=TJ%R{~3<%>>E+dXgQ zRk9;ar>N&>=Y_$*y6>tV%5(qA(gzh# z$3m%l>xc444u3zEaZvTsmAf5y2eR^TE<$Eht#d~-8Y&l z%|mIk`o+Q;alUTl zYSpK|&#)!}hn-NiM=l=cLKdYEsv0zx8KLhLk>IR9#5KGXLh*{)9%&k`_|3K zahnzKFC#*r%<%LOJkPaGO?TAgY{6h7|HEdfm1PgSTwSE;Qmi!EsL%hQV)hs@4otCW z8MF*PxHKl4?S6x5|60QDPZ8sP4xQ~3@*IlT%r6pZlun#Cc9hMQWm{!^rB(h6%$h09 z+L5T+Ju=*ER?k9KcN_T;ae-M%*8nc(^PzqmrV$O$1&V!{sil|0a;^GdTl3@NQUtS4 zr7NUUeaoOupOeD+eyR&%C!4q}vxY-8j&A7v{;4x7TX6~^JZ3F9<56|mY6ol0zIBu8 z_}CGXacGrVE9LOCs;lsgqZQiH@|*sIle`+6uBq$jjzuEqxZYv?3 z1O$NC@*RikvxC}8;)HL1Dt(k-&`?C~0dvcnVeeLD*GSB#3e#YD-GlTxJA_4MTSkl= z#p5INXj};%d6<}=r~@wA)7Jd5XlSuGlirz7G_Y;c*2%7E(P136Rdi1Z9X5^385#@I z5;rC~>syyIq1=>MYevY2?>9_Sa6bboKfnP}JlGF*T41$5&cw_KikG0EG20aJCFZXQ70 z{8FD$InPn*{;I7G15wY9+>J)~mmwtcg398ya2GIu5?g6c~zYdZB zsmB9Z2Gu73son}eBfy@R2 zV~Q-BNlq`ZC~HrIDn&pLAP}xZDyGq_fNMWPD&Dn(6Rs2@k?@YfK%L(ffdl*K{&oYN zc!pE#J^UL&%3fS0dJ=M%0}EREXQ#@YOfSuEMPi9}hd0n5_@FAkUAq6IGZ!yWL28Hm zwEj)_M5`=p;PunCV*h(`2C3!Um3@HNXHgaaV{&c-Y4MHJMN@_cHW`I$dUIjf!d*z# zXogvK^C*8fBRQ6g&R@`(+O7!l4AZFAfVQ5U^tpG6fJ<5E(;9M4JT8?CpG_u z>!*Y6=rN*|ICu&Ck6H5@^ipkbm9Na{!2f=F}bG2Y21*chCk)Wg+R zDv1Q!NO})TZ`C@7YCK^?z8Jt1q(NK%6Y*jvL>UK5Z9%OML2A6|9+K}=DvPVJND9tC ztTj?yq08WcD!t~wKCb>JsF|lQgC3keX9q(uaOY4;+QjCS0N_K{4N@B?-d)!@>$A zz$=1adWDMdW^3;;LiHe(mzsQA{fuA+8Vr2De3&X#1In^%KcM9G&qw-}O9iy0K$BacJ`g`$ zRwz8WKf1ZxFyz+PryXK_s~bHOyzK*BeS{45vz|;#iqHiOZf?fj`eMSHGS3e$N@-B- zF^6s$Gp5e>R+3^YZebD}-y^}>m4$F!Q@AXQ$N5+emIlR*#{ss3iFHxqIs_l|oRiIX zfSiwysJVHcR8UaNa0l13t~8gPQbiYIX^wfPIGR55_C5R7)De`HO z&TZq6HFm^iu^b7`EfRvy((jZ|QsOXDpzJ)|eYkB1^Y^dBg@aX^XVXH&)Z~mU9rqMP z3FCRb`je$W=PE2!F(Fft)h_mQ#e}JvIsqHLnD~Ua>>aL(i?CdLcQi1yZOCuT*b!}x zJ&*_8#OeGuH>o9*+{p2NkKFQVm%?eePpLpkyTR2A84;Rn?^xV5f6>(6f@iw^244E# zPKvZAxm5EKT|E-f3}dxOi$Bc z^8}))QLTW?#+<8XwF?6wzDJ58fN#9W$8xqb7_}Vd5@Egg&c}(Ioh$s`aWkd0kA0v$ zMnKboF7}aru{aeB<|+jL&3RY64jjy|5L*kJaFT~T>b5i6&9myhLCJ5{a4?-ZX>)K;P~4gdfEs2 z-~CLMFl|D@cp?D1p0fUZam?&4{b4#`E_=tL!)=4(bRqzSB{l5i1K=oTjSEF# z#hQ;Yola&!azTU2#IQrd%qqmj~C$ho0AvwZeAN0Qa=iGuI^Dbec+2U!@N4rH^%)y6+> za2H!`zYhClzYdF^xs$CD?boG05q{@okF$Sob|RalSZtbq!4t>lOtNy_+7kb|X+v1f9={)d>(RewMscaisW5Ip( z)FS^rF?vBJx<`Uk#8a%h)Z7>j8>d4+<$@vkaJTVY&GbB3o72%@{HGot=ym01@gfpu zEpPJ5H?aTI>N}JCD*|i&3q>v_+#tH^(e!D1KZ{(d`vCm7a@6CW)r8(otMdC+E7>S1 zdovk*Cg!dQ5{-%{pKQA~sm_Cc@5;N1u=$ld2lT$R=gy=pl6P2~tG(X@3$T9E$kA6w zFC#YR)!BUEJ)dPBws+-yZg^UGa(|b2e!l75e6baQ7ZOK4+g}Io+(I}9`28DdX490O zn_`I7Zh%0+soNWJBg;0xhfj?7T0)((D^%LGSbAUij3b`?lDojx-YLfCz0ddf_U6I9 z!Ji0%#`mN9Y|E#|*WbMx@du8DQqOZHb2^Y`JN5dq0{<=;1NA{4jVhH~YsWs}Akk!K zZp2hIXqeIFVUnHm=S)T9{U_aX>+hi>X4kB#YXB?ZXN7Tg#EQW?Rzg=#es8zKVzfhk z+Om*cnw;K5k>Twt^0AXq;FFZwDO5$dWrfoQagwDtpMJ43R*^$P!w4Hc%&Tn^)**Q4 z3$$*H1Z~z@Z*&@-S+Pj(iL6GK_{h3;w+b!4x zD&je(I&v$$&Nc4mr!s0pq|=C_j^Sq}bnxNWT`gO_kC1Y z*L_p+`GSZ*ib16d2LMK(uHTBdrnCfE*8YUAF&NS6toBB4y|E4`<48O>JIU3_^DbOC zhBp{=i*!N!yuH}SFZlhHB=|i+HSP_>%cj4p77D)YYCeA%*YtP)Uae)c4odVmZ&Xwi zTTzL%9b#m^Eok44OMB=Fnnzw+1XSXqI}jGxM|#Xr*$jy|m;icJViRoh3s1wa6d=PD`iDWDi+B90|VBiv;)ph!!(qR3M! zc@^}4k%s&oVGB^$7-NxDn*ev@(pXk9(UE2A-ES;~nQUg;l_xDyZx_p3{Mzg~+L)qD zipg%`neN0VA|vaKCBa8k&SRiY!>ToPgglOdnR&UoG{X20QPteck6TBCmF>c&chfM_ zr5#LA#xK3bq~F5XPKD^6-Ey(|P+t6@;(NqJbUPQb^#p*o2D}BfyHoOSA!pPU%e`hb zQO7PdX}mXSExVNptUNkdv^7i~M>^imJHp75h@(^}yau=sn>pMB$$zKO&UvgS%4NE% zP{*oMKB{c&)L+{BE!5VjBUjDT0(&X#oWULRG1P6h)deDG`DS zLa2t`B_O?*K$7?J-7??(aqsTz+1Z`5J6q1|o@aK?Xns|q?NLze>3LEpp-Fy18SP4d>HvAl}aKIc9xyz$btsWIm^PaTI)azp>z`0bP# zAE~APk}R^Evmw1@`vV7A|J2hb{N=Ml7J_YZ>7j$9y|S|5Z>wcjCZoNts?I1CDLFs0 z3uFbZd7o9Yt4yJufi@W(c*wR$({iq}+Bl}?AL4{B0)~(g4DFcJ?&29X>7kD?9f|oF z*t*KcX+d?lCByLs(6P@`{%S$?{M~MXd8|-$u}${cBgok+Qd9ZwSc=|E%*89;E~s(i z<_%8q7;qO!(JxSCK2`xDv(i-L)1bU) z7SDAoB>=s=-F~HB)gRv9bdM>1l3Y#)aF2`=TO>~ghnvQDzn{xFF1smG&*=Uwmfti! z^3v_j1kOgjS6S{1hkEPsowFM%ktZBuT~JHvAs{BB+TOen66M7g>gmMQ~{IZog`;)gV zonF&^2UY1s0r6`lRTb*Od_08;<+7gpNqH0~z2Fpy`{Ofbu8;RLk~Xk~*40>Y=AO|r zPi4UJAb5_Tb84qyeSj7pZ%(`)6GWWtu_CMqF_)5(Zl4`n!2Y_VY0!F@<5zU}wytre z;}^L|Q#(aOOzK~9-PkNj1!fQ#sR9FrW-q3(m^J=O7~cM(@3KnrJS8o6>g;4)lO7Qa z)A0^9u?M*kXjVM|VDb`k;n)jK`gzEp8Y<`Xqw=FZrVV7lx2rGzis*c6mJ&{|yFv)* z|KZzJ;jkRg@CLX0BVp;POSxK>M?#kk_n5yD-wWyLsPng1D#itG3= zWhb)NiUq#4lDD^!NQYu1!VEdGgptvB;uYi|pK))3hFGI!G>J2)S3*5=(OFZb4 za}_Xrrja`(i{ajz%*WEHKiuX;A1ylHr|CSCC#gY#o+bi6*4Iu`v| zA4;>aj2_Tep!Psh8`uF&IgTYr2_(x01Zk*1i~P|8-XeYex8|J($V)|@p^fRB2}yxI zST4aUDNh`e^QUz+j_|n9ItM&obkj4X?mOutD}~2{Hl5bx`l~{1kkKnEvz{5O^WO%U@Y=4aGo%mkAKa)Rs7;)(D z89d@}jE0csGC}LblXqY)1#^Pg0((IOC``^h$vx5B28TgY)xoy5IZU**!*7(M=6m+G zc=)aOWvubgvClyv{8ny1s+1}0sMa@(Ul@;4G*8tJ zO8M~%wRkHJ>18?$q|pBDs@6&Uh=1D5nqC5e0M4kBpZNH|82JzTc)xzfJXirmDX~i+ z+8Yfkyns-kF;s~ zDzl1o0eqfmcv$KAJ(|e4Z8IsiNw3<-TbyF{Mqqck7Rl7a<6{Ees!7ypBMWXvN7Xl) zCUkS<&puU>2giNoWNNVycmE63aoaLnf3#xO)4$HB;3J8HC9P9I0TPR}RpP^MJ+1@f z7DeID&9&TXc?x=EU$T}NoUUsAUE@M~ey;eK(931kWa-#o`x(O}Yc<0pgn(rbvhy0_ zwj0fS{XeMNZ`lc$g^lh$_}d-+U(kmx+r-ov07zSZDg-lOK^c$HB8_ zKa>N7>Lhp4P3O&Bnb#eYQXc;dDmv;;EMtepg=o!nWjt0UwE;+rluu;g4&f?@_yXK z*|l85R64ymyL;VR>8F}TL9n%ZaH$UcgV@M#yzbHm7Vb?-fYoC<6CPzH1%%FG3aNDvyhgcT zuQejx_tZzRlx-1eMk+iuj!@X$-Y9IcVOC^|G7a zUO<&fwk0R!OGERw;1V@+?^aY(6I{NTSorWrZE>3>3jY+LGqKrT68bEJlP96O*4mk9 z<9$o->Ky@zedW5pm$)W;?(8`>B)Dv~8%C7eTJSOTrXUTtTz>3&5=C6NJKEFxr2a%` zH|=GEo3pe3h~Iz99}EPOt&iG67G7%<{{h+SBzC=P;tLFnavF1<2#*ZK>}q2U-9*m` zuCpt;!qW6o?HX{L1vVuHZw8!M>WMqsKVPy)JdEdtoTqivNnlTK63pf=L97} zUX!M;Q$LW*!d`cGAveiHiVAJQD)7F3u4hd#HTraVvPPnYx^8NY&&8$Ks2Qw6mrhq& zaO)WJS96C1>5g@zPU7%x8e|)CZQg zj|n_}x>Lz|c(mOZP8hNr>SHb~bhh&W?@obM5>4@t^&< zQb6^AiC_NLHqR23wg>#d4JyORIb#+$C%0s3C1SzP9{yf74r|~Z9xr=j7}216t7$Cd zW$|{cKxlOzTVkfRZ*0uDZXjlNUPyIRTWQoWZ$5L^V00SBAlhCyYZY2!-46)%?|>Q8 z{>i)~%>%Fv^Z?n(XDA^QIdGM71sE2Vqf{Ra&A)z`%Y$(wMb4|fa`&w=m;!rfUk?qT znoF@p4nGD`6TdRQZ!H<0|8007 z6tXiRgMU_Y9n)XZo0~bP#dong;@9pjo`{z4?-b{Eh3>E5#vccSKUU&0%QmU0wvZbM z=--x&O-0JBxwt(OQIol9s#$rmw8sID*ImMo=h!qCCl_eJl5fu znCV`VTA`b85m_ZwlfKD0#`ak*=PK^tW23rjKBceOwD0XzITGiz?fl4^JW;uuL1Wka zBBJN3cKmVS)b1^ApWmr%#L4wlDmTZLOayx z?diVpkY}e$S9Mx!OXXC5rTw^F1)Vl;`}(+kKSa&#E!*XKdy$5U`MR-g<*~`Xv4v>z zhS|xAV)me=5mj$dD$kj*l|4g$rN1SYhGMBwMKfxx5AQhVS67dl9SY0%UmAw5d`YS6 zUGJjwV6FoB=2Bq^R4K-UnDC2M&usYwlo}4(#y=!!joX>8|ANRhR2ou^@+_1{XAB*D ze62vj%kKEXr(vG*{ugLT!`ac_U)nB~btl_?k|ua7tv8i_8R~6C25ywe)%2BKPG{~I zxAUneuNxo8tRjmrxT!*&E7Mj66MEd<9;!yLZ+HP>Pw~@HW$zb%&0wiEjF68{T1;_K zcX=Nn9Q)+01O1-s`714X@IU|Am5SDN4BQ$f51*vf;ugrV39>DDwcF#1Expk?dgj_x zD!*i2sir@!eRg+~MGU?i2iY{dqgwmiWrY!!EPdj0jOf<-YJ=x=49 zzWfEiN3Uc%Xotit;c{k_xm~Rsx*}+xBlZI2fe2$ar>CUNI%|^e9O`)eEheR4+b7_< zrajk|q!X){IP+Mqm24bmm@=mqOyN*f)Ju#OXTYefi<=zIFA&r;Jol=7H2tov?hwCS zaV~T3{AD&{i5O_1i3=Tpb$QM8?+PB;V&%Jp%gxMRNQKfEyNVG>Of+2THVbJpkEDyTizr$PR@cwb0ceKJgjlv6VXQineI zbIZyxtZBlRLxN-QH!N7CV9J(G+iYxUZQMtGgV=JOrRzpmTC9aBYx`WmJD~d&G+%?l>@;d=ebrkhda0YB#0$;&lrv(JRsvn3j!QFC&KTPMi7qy?3_5|TajxnoN zqa0RS2L&H(0zy4_Q{iI7E{pI`6jPFJ3Aaqv-W#XPlGYDt0Nauopgf_c)ZfDp-@#;E z1?dXANgMj88>OuXRjen7a#B-WtX$lM-A?jWwBL!lA=Vb5Avz-u`mxtJ_8fxwsW-H_ z&tIyWyEi>#`WSj{63UE{dfl*}fK_Ry`58AA-E@G7j9dkW6j0z@GEhULXhuLDFhN}{ zI5w1}-LODoHDW#~+GPvXV*AdhCIM@5db|43STK7MxoHxwi42FD3(z=ahck-AibIA& zd3OxDI@4c2iV#oh+^V8?tY;H{b*lDnC>W_nD?q5kKIHQN8< P_B58B<_72v8?FBUe_OY# delta 21585 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 Kr_3O+RQeC1h)>r5 diff --git a/database.sql b/database.sql index d3cdae0..8e52928 100644 --- a/database.sql +++ b/database.sql @@ -1,5 +1,5 @@ -- MySQL Script generated by MySQL Workbench --- Fri 09 Nov 2018 01:08:12 AM MST +-- Mon 11 Feb 2019 02:58:22 PM MST -- Model: New Model Version: 1.0 -- MySQL Workbench Forward Engineering @@ -70,46 +70,13 @@ CREATE TABLE IF NOT EXISTS `accounts` ( ENGINE = InnoDB; --- ----------------------------------------------------- --- Table `apps` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `apps` ( - `appid` INT NOT NULL AUTO_INCREMENT, - `appname` VARCHAR(45) NULL, - `appcode` VARCHAR(45) NULL, - PRIMARY KEY (`appid`), - UNIQUE INDEX `appid_UNIQUE` (`appid` ASC)) -ENGINE = InnoDB; - - --- ----------------------------------------------------- --- Table `available_apps` --- ----------------------------------------------------- -CREATE TABLE IF NOT EXISTS `available_apps` ( - `appid` INT NOT NULL, - `uid` INT NOT NULL, - PRIMARY KEY (`appid`, `uid`), - INDEX `fk_apps_has_accounts_accounts1_idx` (`uid` ASC), - INDEX `fk_apps_has_accounts_apps1_idx` (`appid` ASC), - CONSTRAINT `fk_apps_has_accounts_apps1` - FOREIGN KEY (`appid`) - REFERENCES `apps` (`appid`) - ON DELETE NO ACTION - ON UPDATE NO ACTION, - CONSTRAINT `fk_apps_has_accounts_accounts1` - FOREIGN KEY (`uid`) - REFERENCES `accounts` (`uid`) - ON DELETE NO ACTION - ON UPDATE NO ACTION) -ENGINE = InnoDB; - - -- ----------------------------------------------------- -- Table `apikeys` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `apikeys` ( `key` VARCHAR(60) NOT NULL, `notes` TEXT NULL, + `type` VARCHAR(45) NOT NULL DEFAULT 'FULL', PRIMARY KEY (`key`)) ENGINE = InnoDB; @@ -346,6 +313,28 @@ CREATE TABLE IF NOT EXISTS `userkeys` ( ENGINE = InnoDB; +-- ----------------------------------------------------- +-- Table `userloginkeys` +-- ----------------------------------------------------- +CREATE TABLE IF NOT EXISTS `userloginkeys` ( + `id` INT NOT NULL AUTO_INCREMENT, + `key` VARCHAR(255) NOT NULL, + `expires` DATETIME NULL, + `uid` INT NULL, + `appname` VARCHAR(255) NOT NULL, + `appicon` TINYTEXT NULL, + PRIMARY KEY (`id`, `key`), + UNIQUE INDEX `id_UNIQUE` (`id` ASC), + UNIQUE INDEX `key_UNIQUE` (`key` ASC), + INDEX `fk_userloginkeys_accounts1_idx` (`uid` ASC), + CONSTRAINT `fk_userloginkeys_accounts1` + FOREIGN KEY (`uid`) + REFERENCES `accounts` (`uid`) + ON DELETE NO ACTION + ON UPDATE NO ACTION) +ENGINE = InnoDB; + + SET SQL_MODE=@OLD_SQL_MODE; SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; @@ -368,8 +357,7 @@ COMMIT; -- ----------------------------------------------------- START TRANSACTION; INSERT INTO `accttypes` (`typeid`, `typecode`) VALUES (1, 'LOCAL'); -INSERT INTO `accttypes` (`typeid`, `typecode`) VALUES (2, 'LDAP'); -INSERT INTO `accttypes` (`typeid`, `typecode`) VALUES (3, 'LIGHT'); +INSERT INTO `accttypes` (`typeid`, `typecode`) VALUES (2, 'EXTERNAL'); COMMIT; diff --git a/database_upgrade/2.1_3.0.sql b/database_upgrade/2.1_2.2.sql similarity index 91% rename from database_upgrade/2.1_3.0.sql rename to database_upgrade/2.1_2.2.sql index c33b5e1..486fbd2 100644 --- a/database_upgrade/2.1_3.0.sql +++ b/database_upgrade/2.1_2.2.sql @@ -27,4 +27,6 @@ DEFAULT CHARACTER SET = utf8; ALTER TABLE `userloginkeys` ADD COLUMN `appname` VARCHAR(255) NOT NULL AFTER `uid`; ALTER TABLE `userloginkeys` -ADD COLUMN `appicon` TINYTEXT NULL DEFAULT NULL AFTER `appname`; \ No newline at end of file +ADD COLUMN `appicon` TINYTEXT NULL DEFAULT NULL AFTER `appname`; +ALTER TABLE `apikeys` +ADD COLUMN `type` VARCHAR(45) NOT NULL DEFAULT 'FULL' AFTER `notes`; \ No newline at end of file