/** Ċ Ġ* ĠCopyright ĠÂ© Ġair back Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġfree Ġsoftware : Ġyou Ġcan Ġredistribute Ġit Ġand / or Ġmodify Ċ Ġ* Ġit Ġunder Ġthe Ġterms Ġof Ġthe ĠGNU ĠAffero ĠGeneral ĠPublic ĠLicense Ġas Ġpublished Ġby Ċ Ġ* Ġthe ĠFree ĠSoftware ĠFoundation , Ġeither Ġversion Ġ 3 Ġof Ġthe ĠLicense , Ġor Ċ Ġ* Ġ( at Ġyour Ġoption ) Ġany Ġlater Ġversion . Ċ Ġ* Ċ Ġ* ĠThis Ġprogram Ġis Ġdistributed Ġin Ġthe Ġhope Ġthat Ġit Ġwill Ġbe Ġuseful , Ċ Ġ* Ġbut ĠWITHOUT ĠANY ĠWARRANTY ; Ġwithout Ġeven Ġthe Ġimplied Ġwarranty Ġof Ċ Ġ* ĠMERCHANTABILITY Ġor ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE . Ġ ĠSee Ġthe Ċ Ġ* ĠGNU ĠAffero ĠGeneral ĠPublic ĠLicense Ġfor Ġmore Ġdetails . Ċ Ġ* Ċ Ġ* ĠYou Ġshould Ġhave Ġreceived Ġa Ġcopy Ġof Ġthe ĠGNU ĠAffero ĠGeneral ĠPublic ĠLicense Ċ Ġ* Ġalong Ġwith Ġthis Ġprogram . Ġ ĠIf Ġnot , Ġsee Ġ< http :// www . gnu . org / licenses />. Ċ Ġ*/ Ċ package Ġcom . air back . core . utils Ċ Ċ import Ġcom . air back . core . Invalid Password Exception Ċ Ċ /** Ċ Ġ* Ġ@ author Ġair back ĠLtd . Ċ Ġ* Ġ@ since Ġ 1 . 0 Ċ Ġ*/ Ċ object ĠPassword Checker Util Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġpartial Regex Checks Ġ= ĠarrayOf (" .* [ a - z ]+ .* ", Ġ// Ġlower ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" .* [ A - Z ]+ .* ", Ġ// Ġupper ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" .* [ \\ d ]+ .* ", Ġ// Ġdigits ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" .* [@ #$ % ]+ .* " Ġ// Ġsymbols ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġ@ Jvm Static Ġfun Ġcheck Valid Password ( password : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( password . length Ġ< Ġ 6 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Password Exception (" Your Ġpassword Ġis Ġtoo Ġshort Ġ- Ġmust Ġbe Ġat Ġleast Ġ 6 Ġcharacters ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcheck Password Strength ( password ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheck Password Strength ( password : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstrength Percentage Ġ= Ġ 0 ĊĊĠĠĠĠĠĠĠ Ġif Ġ( password . matches ( partial Regex Checks [ 0 ]. to Regex ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstrength Percentage Ġ+= Ġ 2 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( password . matches ( partial Regex Checks [ 1 ]. to Regex ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstrength Percentage Ġ+= Ġ 2 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( password . matches ( partial Regex Checks [ 2 ]. to Regex ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstrength Percentage Ġ+= Ġ 2 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( password . matches ( partial Regex Checks [ 3 ]. to Regex ())) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstrength Percentage Ġ+= Ġ 2 5 ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( strength Percentage Ġ< Ġ 5 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Password Exception (" Password Ġmust Ġcontain Ġat Ġleast Ġone Ġdigit Ġletter , Ġone Ġcharacter Ġand Ġone Ġsymbol ") ĊĠĠĠ Ġ} Ċ }