1 | <?php |
||||||
2 | |||||||
3 | /** |
||||||
4 | * @license MIT, http://opensource.org/licenses/MIT |
||||||
5 | * @copyright Aimeos (aimeos.org), 2015-2023 |
||||||
6 | */ |
||||||
7 | |||||||
8 | |||||||
9 | namespace Aimeos\Shop\Command; |
||||||
10 | |||||||
11 | use Symfony\Component\Console\Input\InputOption; |
||||||
12 | use Symfony\Component\Console\Input\InputArgument; |
||||||
13 | |||||||
14 | |||||||
15 | /** |
||||||
16 | * Creates new accounts or resets their passwords |
||||||
17 | */ |
||||||
18 | class AccountCommand extends AbstractCommand |
||||||
19 | { |
||||||
20 | /** |
||||||
21 | * The name and signature of the console command. |
||||||
22 | * |
||||||
23 | * @var string |
||||||
24 | */ |
||||||
25 | protected $signature = 'aimeos:account |
||||||
26 | {email? : E-Mail adress of the (admin) user (will ask for if not given)} |
||||||
27 | {site? : Site to create account for (will use default value if not given} |
||||||
28 | {--password= : Secret password for the account (will ask for if not given)} |
||||||
29 | {--super : If account should have super user privileges for all sites} |
||||||
30 | {--admin : If account should have site administrator privileges} |
||||||
31 | {--editor : If account should have limited editor privileges} |
||||||
32 | {--api : If account should be able to access the APIs} |
||||||
33 | '; |
||||||
34 | |||||||
35 | /** |
||||||
36 | * The console command description. |
||||||
37 | * |
||||||
38 | * @var string |
||||||
39 | */ |
||||||
40 | protected $description = 'Creates new (admin) accounts'; |
||||||
41 | |||||||
42 | |||||||
43 | /** |
||||||
44 | * Execute the console command. |
||||||
45 | * |
||||||
46 | * @return mixed |
||||||
47 | */ |
||||||
48 | public function handle() |
||||||
49 | { |
||||||
50 | $site = $this->argument( 'site' ) ?: config( 'shop.mshop.locale.site', 'default' ); |
||||||
51 | |||||||
52 | if( ( $email = $this->argument( 'email' ) ) === null ) { |
||||||
53 | $email = $this->ask( 'E-Mail' ); |
||||||
54 | } |
||||||
55 | |||||||
56 | if( ( $password = $this->option( 'password' ) ) === null ) { |
||||||
57 | $password = $this->secret( 'Password' ); |
||||||
58 | } |
||||||
59 | |||||||
60 | $context = $this->getLaravel()->make( 'aimeos.context' )->get( false, 'command' ); |
||||||
61 | $context->setEditor( 'aimeos:account' ); |
||||||
62 | |||||||
63 | $localeManager = \Aimeos\MShop::create( $context, 'locale' ); |
||||||
64 | $localeItem = $localeManager->bootstrap( $site, '', '', false, null, true ); |
||||||
0 ignored issues
–
show
Bug
introduced
by
Loading history...
|
|||||||
65 | $context->setLocale( $localeItem ); |
||||||
66 | |||||||
67 | $manager = \Aimeos\MShop::create( $context, 'customer' ); |
||||||
68 | |||||||
69 | try { |
||||||
70 | $item = $manager->find( $email ); |
||||||
0 ignored issues
–
show
The method
find() does not exist on Aimeos\MShop\Common\Manager\Iface . It seems like you code against a sub-type of said class. However, the method does not exist in Aimeos\MShop\Common\Manager\Decorator\Iface or Aimeos\MShop\Order\Manag...rvice\Transaction\Iface or Aimeos\MShop\Service\Manager\Lists\Type\Iface or Aimeos\MShop\Price\Manager\Iface or Aimeos\MShop\Attribute\Manager\Type\Iface or Aimeos\MShop\Order\Manager\Service\Iface or Aimeos\MShop\Review\Manager\Iface or Aimeos\MShop\Price\Manager\Lists\Type\Iface or Aimeos\MShop\Media\Manager\Type\Iface or Aimeos\MShop\Common\Manager\Property\Iface or Aimeos\MShop\Customer\Manager\Property\Iface or Aimeos\MShop\Price\Manager\Lists\Iface or Aimeos\MShop\Cms\Manager\Lists\Type\Iface or Aimeos\MShop\Supplier\Manager\Lists\Type\Iface or Aimeos\MShop\Service\Manager\Lists\Iface or Aimeos\MShop\Tag\Manager\Type\Iface or Aimeos\MShop\Text\Manager\Lists\Iface or Aimeos\MShop\Price\Manager\Type\Iface or Aimeos\MShop\Locale\Manager\Currency\Iface or Aimeos\MShop\Media\Manager\Lists\Type\Iface or Aimeos\MShop\Catalog\Manager\Lists\Iface or Aimeos\MShop\Tag\Manager\Iface or Aimeos\MShop\Coupon\Manager\Iface or Aimeos\MShop\Common\Manager\Lists\Iface or Aimeos\MShop\Service\Manager\Type\Iface or Aimeos\MShop\Order\Manager\Address\Iface or Aimeos\MShop\Product\Manager\Lists\Iface or Aimeos\MShop\Order\Manager\Product\Attribute\Iface or Aimeos\MShop\Order\Manager\Iface or Aimeos\MShop\Media\Manager\Iface or Aimeos\MShop\Rule\Manager\Type\Iface or Aimeos\MShop\Order\Manager\Coupon\Iface or Aimeos\MShop\Customer\Manager\Lists\Type\Iface or Aimeos\MShop\Attribute\Manager\Lists\Iface or Aimeos\MShop\Media\Manager\Lists\Iface or Aimeos\MShop\Plugin\Manager\Iface or Aimeos\MShop\Order\Manager\Service\Attribute\Iface or Aimeos\MShop\Product\Manager\Type\Iface or Aimeos\MShop\Supplier\Manager\Lists\Iface or Aimeos\MShop\Text\Manager\Iface or Aimeos\MAdmin\Job\Manager\Iface or Aimeos\MShop\Product\Manager\Lists\Type\Iface or Aimeos\MShop\Text\Manager\Lists\Type\Iface or Aimeos\MShop\Text\Manager\Type\Iface or Aimeos\MShop\Order\Manager\Status\Iface or Aimeos\MShop\Rule\Manager\Iface or Aimeos\MShop\Common\Manager\Address\Iface or Aimeos\MShop\Plugin\Manager\Type\Iface or Aimeos\MShop\Stock\Manager\Iface or Aimeos\MShop\Attribute\Manager\Property\Iface or Aimeos\MShop\Subscription\Manager\Iface or Aimeos\MShop\Product\Manager\Property\Iface or Aimeos\MShop\Locale\Manager\Language\Iface or Aimeos\MShop\Media\Manager\Property\Iface or Aimeos\MShop\Attribute\Manager\Lists\Type\Iface or Aimeos\MAdmin\Log\Manager\Iface or Aimeos\MShop\Cms\Manager\Lists\Iface or Aimeos\MShop\Locale\Manager\Iface or Aimeos\MAdmin\Cache\Manager\Iface or Aimeos\MShop\Order\Manager\Basket\Iface or Aimeos\MShop\Order\Manager\Product\Iface or Aimeos\MShop\Price\Manager\Property\Iface or Aimeos\MShop\Customer\Manager\Lists\Iface or Aimeos\MShop\Catalog\Manager\Lists\Type\Iface or Aimeos\MShop\Supplier\Manager\Address\Iface or Aimeos\MShop\Customer\Manager\Address\Iface . Are you sure you never get one of those?
(
Ignorable by Annotation
)
If this is a false-positive, you can also ignore this issue in your code via the
Loading history...
|
|||||||
71 | } catch( \Aimeos\MShop\Exception $e ) { |
||||||
72 | $item = $manager->create(); |
||||||
73 | } |
||||||
74 | |||||||
75 | $item = $item->setCode( $email )->setLabel( $email )->setPassword( $password )->setStatus( 1 ); |
||||||
76 | $item->getPaymentAddress()->setEmail( $email ); |
||||||
77 | |||||||
78 | $item = $manager->save( $this->addGroups( $context, $item ) ); |
||||||
79 | |||||||
80 | \Illuminate\Foundation\Auth\User::findOrFail( $item->getId() ) |
||||||
81 | ->forceFill( [ |
||||||
82 | 'siteid' => $this->option( 'super' ) ? '' : $item->getSiteId(), |
||||||
83 | 'superuser' => ( $this->option( 'super' ) ? 1 : 0 ), |
||||||
84 | 'email_verified_at' => now(), |
||||||
85 | ] )->save(); |
||||||
86 | } |
||||||
87 | |||||||
88 | |||||||
89 | /** |
||||||
90 | * Adds the group to the given user |
||||||
91 | * |
||||||
92 | * @param \Aimeos\MShop\ContextIface $context Aimeos context object |
||||||
93 | * @param \Aimeos\MShop\Customer\Item\Iface $user Aimeos customer object |
||||||
94 | * @return \Aimeos\MShop\Customer\Item\Iface Updated customer object |
||||||
95 | */ |
||||||
96 | protected function addGroups( \Aimeos\MShop\ContextIface $context, |
||||||
97 | \Aimeos\MShop\Customer\Item\Iface $user ) : \Aimeos\MShop\Customer\Item\Iface |
||||||
98 | { |
||||||
99 | if( $this->option( 'admin' ) ) { |
||||||
100 | $user = $this->addGroup( $context, $user, 'admin' ); |
||||||
101 | } |
||||||
102 | |||||||
103 | if( $this->option( 'editor' ) ) { |
||||||
104 | $user = $this->addGroup( $context, $user, 'editor' ); |
||||||
105 | } |
||||||
106 | |||||||
107 | if( $this->option( 'api' ) ) { |
||||||
108 | $user = $this->addGroup( $context, $user, 'api' ); |
||||||
109 | } |
||||||
110 | |||||||
111 | return $user; |
||||||
112 | } |
||||||
113 | |||||||
114 | |||||||
115 | /** |
||||||
116 | * Adds the group to the given user |
||||||
117 | * |
||||||
118 | * @param \Aimeos\MShop\ContextIface $context Aimeos context object |
||||||
119 | * @param \Aimeos\MShop\Customer\Item\Iface $user Aimeos customer object |
||||||
120 | * @param string $group Unique customer group code |
||||||
121 | */ |
||||||
122 | protected function addGroup( \Aimeos\MShop\ContextIface $context, \Aimeos\MShop\Customer\Item\Iface $user, |
||||||
123 | string $group ) : \Aimeos\MShop\Customer\Item\Iface |
||||||
124 | { |
||||||
125 | $msg = 'Add "%1$s" group to user "%2$s" for site "%3$s"'; |
||||||
126 | $site = $this->argument( 'site' ) ?: config( 'shop.mshop.locale.site', 'default' ); |
||||||
127 | $this->info( sprintf( $msg, $group, $user->getCode(), $site ) ); |
||||||
128 | |||||||
129 | $item = $this->getGroupItem( $context, $group ); |
||||||
130 | return $user->setGroups( $user->getGroups() + [$item->getId() => $item->getCode()] ); |
||||||
131 | } |
||||||
132 | |||||||
133 | |||||||
134 | /** |
||||||
135 | * Returns the customer group item for the given code |
||||||
136 | * |
||||||
137 | * @param \Aimeos\MShop\ContextIface $context Aimeos context object |
||||||
138 | * @param string $code Unique customer group code |
||||||
139 | * @return \Aimeos\MShop\Group\Item\Iface Aimeos customer group item object |
||||||
140 | */ |
||||||
141 | protected function getGroupItem( \Aimeos\MShop\ContextIface $context, string $code ) : \Aimeos\MShop\Group\Item\Iface |
||||||
142 | { |
||||||
143 | $manager = \Aimeos\MShop::create( $context, 'group' ); |
||||||
144 | |||||||
145 | try |
||||||
146 | { |
||||||
147 | $item = $manager->find( $code ); |
||||||
148 | } |
||||||
149 | catch( \Aimeos\MShop\Exception $e ) |
||||||
150 | { |
||||||
151 | $item = $manager->create(); |
||||||
152 | $item->setLabel( $code ); |
||||||
153 | $item->setCode( $code ); |
||||||
154 | |||||||
155 | $manager->save( $item ); |
||||||
156 | } |
||||||
157 | |||||||
158 | return $item; |
||||||
159 | } |
||||||
160 | } |
||||||
161 |